Fragment详解

1.Fragment
Fragment为什么会出现,它其实是android3.0的时候引入的,可以翻译为“碎片” “片段”起初它主要是给大屏幕上设备上更灵活的展现UI所设计的。
2.Fragment加载到Activity的两种方式
1.静态添加:添加Fragment到Activity的布局文件当中
2.动态添加:动态在Activity中添加Fragment
静态加载就是把Fragment作为一个xml的标签加到Activity布局当中。
常用的方法就是动态添加
首先在布局文件中放一个FrameLayout,方便在Activity中可以动态添加不同的Fragment
然后在Activity中动态添加Fragment
3.FragmentPagerAdapter与FragmentStatePagerAdapter区别
FragmentPagerAdapter适用于页面较少的情况。
FragmentStatePagerAdapter适用于页面较多的情况。

FragmentPagerAdapter源码中的destroyItem方法:
它最后一行调用的是 FragmentTransaction的detach方法。detach并不是真正的内存回收,它只是把Fragment的UI和Activity的UI脱离开来,并不回收内存。

FragmentStatePagerAdapter源码中的destroyItem方法:
mCurTransaction.remove(fragment),在FragmentStatePagerAdapter里面是真正释放了fragment内存。所以说明了FragmentStatePagerAdapter比FragmentPagerAdapter更节省内存的。
Fragment 创建时会调用:
onAttach() -> onCreate() -> onCreateView() -> onActivityCreated()

onAttach():在Fragment 与 Activity关联之后所回调的
onCreate() : 是在初次创建Fragment时候调用
注:这里的onCreate方法看起来和Activity中的onCreate方法一样。但是这个方法只是用来创建Fragment,此时的Activity还并没有被创建完成。
onCreateView():是系统在Fragment首次绘制用户界面时候调用的这个方法
注:如果想要为这个Fragment绘制UI界面,从该方法返回的View必须是Fragment布局的根视图。
在onCreateView()方法调用之后会调用onViewCreated()方法
onViewCreated():表明Fragment的UI界面已经完全绘制好了,调用这个方法可以初始化控件资源。
onActivityCreated():这个方法是在Activity的onCreat()方法调用之后才可以被调用。也就是在Activity被渲染绘制成功以后的调用方法

Fragment被用户可见后调用
onStart() -> onResume()

onStart():表示Fragment可见了
onResume():表示Fragment可以跟用户进行交互了(点击,滑动等操作)

到这里已经完成了Fragment从启动到展现的操作。
当要Fragment被销毁
onPause() -> onStop() -> onDestroyView() -> onDestroy() -> onDetach()

onPause():系统将此方法作为用户离开Fragment的第一个信号(但并不总是意味着此Fragment会被销毁)进行调用。 通常可以在此方法内确认在当前用户会话结束后仍然有效的任何更改(因为用户可能不会返回)。
onDestroyView():表示这个Fragment即将结束,会被保存。
onDetach():Fragment和Activity解除关联的时候调用

到此,我们完整的走完一Fragment的生命周期。
还有一些其他场景时Fragment调用的生命周期
屏幕灭掉
onPause() -> onSaveInstanceState() -> onStop()
屏幕解锁
onStart() -> onResume()
切换到其他Fragment
onPause() -> onStop() -> onDestroyView()
切换回本身的Fragment
onCreateView() -> onActivityCreated() -> onStart() -> onResume()
回到桌面
onPause() -> onSaveInstanceState() -> onStop()
回到应用
onStart() -> onResume()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值