Android Fragment 生命周期及回调方法

Android Fragment 生命周期及回调方法

1.概述
基本概念:Fragment,简称碎片,片元。是Android 3.0(API 11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。
support-v4库原本是一个jar包,24.2.0版本开始,将support-v4库模块化为多个jar包,包含:support-fragment, support-ui, support-media-compat等,这么做是为了减少APK包大小,方便用户需要用哪个模块就引入哪个模块。
例如:想引入整个support-v4库,则compile ‘com.android.support:support-v4:24.2.1’,如果只想引入support-fragment库,则com.android.support:support-fragment:24.2.1。

使用:
建议使用support库中的android.support.v4.app.Fragment,而不要用系统自带的android.app.Fragment(因为support库是不断更新的)。 如果要使用support库的Fragment,Activity必须要继承FragmentActivity(AppCompatActivity是FragmentActivity的子类)。

特点:
Fragment依赖于Activity的,不能独立存在。
一个Activity里可以有多个Fragment。
一个Fragment可以被多个Activity重用。
Fragment有自己的生命周期,并能接收输入事件。
用户可以在Activity运行时动态地添加或删除Fragment。

优势:
模块化(Modularity):用户不必把所有代码全部写在Activity中,而是写在各自的Fragment中。
可重用(Reusability):多个Activity可以重用一个Fragment。
可适配(Adaptability):根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局,用户体验更好。

2.Fragment 生命周期详解
2.1Fragment 生命周期

Fragment 生命周期框图:
在这里插入图片描述
步骤详解:
onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。
onCreate():系统创建Fragment时调用,作用:实例化一些变量,例如用户暂停、停止的时候想要保持的数据。
onCreateView():创建Fragment的布局(视图)。
(第一次使用的时候fragment会在这上面画一个layout,为了画出该layout需要返回一个布局的view,也可以返回null,表示什么都不显示。当系统要用到fragment的时候,fragment就要返回他的view,此时应该越快越好,因此尽量不要在这里做耗时操作,比如从数据库加载大量数据。)
onActivityCreated():当Activity中的onCreate()方法执行完后调用。
当fragment执行到onActivityCreated()的时候,activity的onCreate()才刚执行完成。因此,在onActivityCreate()调用之前,activity的onCreate()可能还没有完成,因此不能在onCreateView()中进行与activity有交互的UI操作,UI交互操作可以在onActivityCreated()里面运行。即这个方法主要是初始化那些需要父Activity/Fragment的UI已经被完整初始化才能初始化的元素。
onStart():启动Fragment时调用,此时Fragment可见。
onResume():当Fragment可见且可交互时调用。
onPause():当Fragment不可交互但可见时调用。
onStop():当Fragment不可见时调用。可能情况:activity被stopped或fragment被移除,加入到回退栈。一个stopped的fragment任然是活着的,如果长时间不用也会被移除。
onDestroyView():当Fragment的UI从视图结构中移除时调用。Fragment中的布局被移除时调用,表示fragment销毁相关联的UI布局,清除所有与视图相关的资源。(这一步骤只是移除视图,并没有销毁且没有脱离activity)
onDestroy():销毁Fragment时调用。
onDetach():当Fragment和Activity解除关联时调用。(fragment脱离activity)
注意:上面的方法中,只有onCreateView()在重写时不用写super方法,其他都需要。

2.2Fragment 依赖于 Activity
Fragment 是依赖 Activity 的,fragment 和 activity 启动和销毁时生命周期中各个方法的关系理解:
fragment 和 activity 生命周期中各个方法的关系和顺序图:
在这里插入图片描述
1、 Fragment的启动(Activity 在Paused之前状态)
分两种情况来说明:
第一种:在Activity的启动过程中,我们在activity的生命周期中添加了的Fragment会随着fragment生命周期图走,并且会追赶上Activity的生命周期,假如我们在Activity的onStart方法中添加了Fragment,那么我们的Fragment会自动调用onStart之前的生命周期方法。
第二种:在Activity启动完成以后调用 fragment,其实还是跟上面的理解一样,我们当前Activity 执行过onResume方法了,所以我们在使用Fragment的时候,fragment会自动的调用onPause之前的生命周期的方法。

2、Fragment的销毁 (Activity 的Paused之后的状态)
Activity自己销毁的过程中所有的Fragment会跟随Activity调用,处于显示中的fragment的生命周期是紧紧追随它的宿主Activity的。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值