Fragment的生命周期以及与Activity生命周期联动

Fragment一)Fragment生命周期如何Activity联动 总而言之,Fragment生命周期Activity生命周期的精细投影,二者紧密耦合。这种联动关系要求开发者必须清晰地知道在哪个Fragment回调中执行何种操作是安全的。视图初始化在中完成。数据初始化和观察在中进行,并利用LifecycleOwner自动管理订阅生命周期。视图引用清理在中完成,这是防止内存泄漏的生命线。使用ViewModel来持有数据,完美解耦数据UI的生命周期,并优雅地处理配置变更。 阅读详情

在学Fragment之前肯定学过了Activity,Activity有属于自己的生命周期,Fragment基本上和activity 大体一样,但是有自己特有的生命周期方法,下面我们一起来看一下。

说白了主要看两张图,和运行代码:

一. Fragment的生命周期


二. 与Activity生命周期的对比



三. 场景演示 :

①启动Fragment

07-05 11:14:48.791 16273-16273/com.mypractice E/----A Activity----: onCreate
07-05 11:14:48.809 16273-16273/com.mypractice E/----A Activity----: onStart
07-05 11:14:48.809 16273-16273/com.mypractice E/----A Fragment----: onAttach
07-05 11:14:48.809 16273-16273/com.mypractice E/----A Fragment----: onCreate
07-05 11:14:48.809 16273-16273/com.mypractice E/----A Fragment----: onCreateView
07-05 11:14:48.813 16273-16273/com.mypractice E/----A Fragment----: onActivityCreated
07-05 11:14:48.813 16273-16273/com.mypractice E/----A Fragment----: onStart
07-05 11:14:48.813 16273-16273/com.mypractice E/----A Activity----: onResume
07-05 11:14:48.813 16273-16273/com.mypractice E/----A Fragment----: onResume

②锁屏(注意此处Fragment的onSaveInstanceState方法执行,但是Activity的此方法并未执行,解释见文末尾注释):

07-05 11:18:36.007 16273-16273/com.mypractice E/----A Activity----: onPause
07-05 11:18:36.007 16273-16273/com.mypractice E/----A Fragment----: onPause

07-05 11:18:36.007 16273-16273/com.mypractice E/----A Fragment----:onSaveInstanceState

07-05 11:18:36.193 16273-16273/com.mypractice E/----A Activity----: onStop
07-05 11:18:36.194 16273-16273/com.mypractice E/----A Fragment----: onStop

③解锁:

07-05 11:19:20.898 16273-16273/com.mypractice E/----A Activity----: onRestart
07-05 11:19:20.899 16273-16273/com.mypractice E/----A Activity----: onStart
07-05 11:19:20.899 16273-16273/com.mypractice E/----A Fragment----: onStart
07-05 11:19:20.910 16273-16273/com.mypractice E/----A Activity----: onResume
07-05 11:19:20.910 16273-16273/com.mypractice E/----A Fragment----: onResume

④切换到其它 Fragment(A --> B):

07-05 11:21:02.961 16273-16273/com.mypractice E/----A Activity----: onPause
07-05 11:21:02.961 16273-16273/com.mypractice E/----A Fragment----: onPause
07-05 11:21:02.999 16273-16273/com.mypractice E/----B Fragment----: onAttach
07-05 11:21:02.999 16273-16273/com.mypractice E/----B Fragment----: onCreate
07-05 11:21:03.000 16273-16273/com.mypractice E/----B Fragment----: onCreateView
07-05 11:21:03.002 16273-16273/com.mypractice E/----B Fragment----: onActivityCreated
07-05 11:21:03.002 16273-16273/com.mypractice E/----B Fragment----: onStart
07-05 11:21:03.003 16273-16273/com.mypractice E/----B Fragment----: onResume

07-05 11:21:03.900 6921-6921/kj.com.mypractice E/----A Fragment----: onSaveInstanceState
07-05 11:21:03.452 16273-16273/com.mypractice E/----A Activity----: onStop
07-05 11:21:03.452 16273-16273/com.mypractice E/----A Fragment----: onStop

⑤Back键返回(B --> A):

07-05 11:23:32.094 16273-16273/com.mypractice E/----B Fragment----: onPause
07-05 11:23:32.099 16273-16273/com.mypractice E/----A Activity----: onRestart
07-05 11:23:32.100 16273-16273/com.mypractice E/----A Activity----: onStart
07-05 11:23:32.100 16273-16273/com.mypractice E/----A Fragment----: onStart
07-05 11:23:32.100 16273-16273/com.mypractice E/----A Activity----: onResume
07-05 11:23:32.100 16273-16273/com.mypractice E/----A Fragment----: onResume
07-05 11:23:32.515 16273-16273/com.mypractice E/----B Fragment----: onStop
07-05 11:23:32.516 16273-16273/com.mypractice E/----B Fragment----: onDestroyView
07-05 11:23:32.516 16273-16273/com.mypractice E/----B Fragment----: onDestroy
07-05 11:23:32.516 16273-16273/com.mypractice E/----B Fragment----: onDetach

⑥Home键回到桌面:

07-05 11:25:56.622 16273-16273/com.mypractice E/----A Activity----: onPause
07-05 11:25:56.623 16273-16273/com.mypractice E/----A Fragment----: onPause

07-05 11:51:26.861 6921-6921/kj.com.mypractice E/----A Fragment----: onSaveInstanceState
07-05 11:25:57.252 16273-16273/com.mypractice E/----A Activity----: onStop
07-05 11:25:57.252 16273-16273/com.mypractice E/----A Fragment----: onStop

⑦Home键之后返回应用:

07-05 11:26:48.603 16273-16273/com.mypractice E/----A Activity----: onRestart
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Activity----: onStart
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Fragment----: onStart
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Activity----: onResume
07-05 11:26:48.603 16273-16273/com.mypractice E/----A Fragment----: onResume

⑧退出Activity(即退出Fragment):

07-05 11:28:17.679 16273-16273/com.mypractice E/----A Activity----: onPause
07-05 11:28:17.679 16273-16273/com.mypractice E/----A Fragment----: onPause
07-05 11:28:18.109 16273-16273/com.mypractice E/----A Activity----: onStop
07-05 11:28:18.110 16273-16273/com.mypractice E/----A Fragment----: onStop
07-05 11:28:18.110 16273-16273/com.mypractice E/----A Activity----: onDestroy
07-05 11:28:18.110 16273-16273/com.mypractice E/----A Fragment----: onDestroyView
07-05 11:28:18.111 16273-16273/com.mypractice E/----A Fragment----: onDestroy
07-05 11:28:18.111 16273-16273/com.mypractice E/----A Fragment----: onDetach


补充:两Activity跳转生命周期方法执行顺序:

① A --> B

07-05 11:32:23.460 27917-27917/kj.com.mypractice E/----A Activity----: onPause

07-05 11:32:23.513 27917-27917/kj.com.mypractice E/----B Activity----: onCreate

07-05 11:32:23.513 27917-27917/kj.com.mypractice E/----B Activity----: onStart
07-05 11:32:23.513 27917-27917/kj.com.mypractice E/----B Activity----: onResume
07-05 11:32:23.953 27917-27917/kj.com.mypractice E/----A Activity----: onStop

② B --> A

07-05 11:37:45.538 27917-27917/kj.com.mypractice E/----B Activity----: onPause
07-05 11:37:45.547 27917-27917/kj.com.mypractice E/----A Activity----: onRestart
07-05 11:37:45.547 27917-27917/kj.com.mypractice E/----A Activity----: onStart
07-05 11:37:45.547 27917-27917/kj.com.mypractice E/----A Activity----: onResume
07-05 11:37:45.976 27917-27917/kj.com.mypractice E/----B Activity----: onStop
07-05 11:37:45.976 27917-27917/kj.com.mypractice E/----B Activity----: onDestroy


注释:

Activity可能被杀死也就是异常终止,之后: OnSaveInstanceState(onStop之前) --> OnRestoreInstanceState(onStart之后)
正常结束只有BACK键  ,异常终止的情况(注意是可能,并不是一定):
1、资源相关的系统配置被改变,比如横竖屏、输入法显示和隐藏
2、系统内存不足时
3、HOME键或者锁屏


Android 中ActivityFragment生命周期的具体变化详解 前言: 一个MainActivity中装载了两个Fragment,在MainActivity中的onCreate()方法中进行了Fragment的添加,显示隐藏,默认显示的是FacilityFragment,点击导航可以切换到InformationFragment。 下面我们来看看Fragment生命周期和MainActivity生命周期的具体变化: 我们首次进入MainActivity时,生命周期变化如下: 当我们点击Fragment中的内容,跳转到下一个Activity时,生命周期变化如下: 当我 阅读详情

相关推荐

ActivityFragment生命周期研究

Activity Fragment 生命周期研究

Android:Fragment生命周期结合Activity生命周期进行分析)

文章目录前言一、Fragment生命周期启动自我结合Activity二、使用步骤1.引入库2.读入数据总结 前言 本文记录笔者学习Fragment生命周期的心路历程 一、Fragment生命周期 在这一部分中,我们单纯以Fragment为观察对象,观察其生命周期 在Android开发平台的官方文档中,对Fragment生命周期有如下的描述 尽管 Fragment生命周期其拥有的活动相关联,但它在标准活动生命周期上也有自己的缺陷。它包括基本的活动生命周期方法,例如onResume(),但活动交互和

qjyws的博客 9992

android-lifecycle, Android Activity/fragment 生命周期的图表.zip

android-lifecycle, Android Activity/fragment 生命周期的图表 完整的Android fragment & Activity 生命周期尝试了解各种各样的片段之后,我做了一些研究并将完整的Android Activity/fragment 生命周期结合起来。 这有两个平行的生命周期( acti

ActivityFragment生命周期

不多说,先上图——左ActivityFragment

zhoujun798的博客 1221

Activity&Fragment生命周期

Activity生命周期 先来看张官方说明图 详细解读每个方法的调用场景 onCreate():当创建启动时调用 onStart():当处于可见状态时调用 调用场景:Activity启动:onCreate()->onStart()->onResume onResume () 调用场景: 1.当MainActivity第一次启动时:onCreate()->onStart()->onResume ; 2.“The activity comes to the foregrou

xuyin1204的博客 2666

Activity生命周期以及Fragment

主要介绍了 • Activity状态 • Activity生命周期Activity的启动模式 • Fragment

简单点的博客 1016

Android中页面生命周期变化

系统保证:A.onPause → B.onCreate → B.onStart → B.onResume → A.onStop。Fragment无法脱离Activity存在,其生命周期由宿主Activity同步触发。Fragment生命周期回调总是发生在宿主Activity的对应回调之间。返回时:新Fragment销毁 → 旧Fragment重建视图(触发 → 所有Fragment执行。触发 → 所有Fragment执行。触发 → 所有Fragment执行。会触发所有Fragment的。

qq_45906596的博客 924

Android ActivityFragment生命周期变化

Q1: ActivityFragment生命周期如何联动?答创建阶段Activity的onCreate()触发FragmentActivity的onStart()触发Fragment的前台交互Activity的onResume()触发Fragment的onResume()Activity的onPause()触发Fragment的onPause()后台阶段Activity的onStop()触发Fragment的返回时Activity的触发Fragment的销毁阶段Activity的。

qq_45906596的博客 1143

Fragment小结

0.说明 本文内容主要来源于Android官方文档,API Guide中Fragment部分的翻译,加入一些自己的理解和实践。不敢说详解,因为大家都知道怎么用。小结是写给自己的。

blwinner的专栏 631

Fragment跳转的生命周期

首先,我们要明白,Fragment要跳转,肯定是有多个Fragment,也要明白它是依赖于Activity的存在而存在的,当然,还要明白它的生命周期:onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onPause->onStop->onDestroyView->onDestroy->onDeath 那

WWW.齐麟的博客.COM 1842

Android中FragmentActivity生命周期对比

Fragment必须是依存于Activity而存在的,因此Activity生命周期会直接影响到Fragment生命周期。官网这张图很好的说明了俩者的关系: 可以看到FragmentActivity多了几个额外的生命周期回调函数: onAttach(Activity);  //当ActivityFragment发生关联时调用 onCreateView(LayoutInflater,ViewGroup,Bundle);  //创建该Fragment的视图 onActivityCreate(bundle);  //当Activity的onCreate();方法返回时调用 onDesto

Android的Fragment生命周期各状态和回调函数使用

主要介绍了Android的Fragments的生命周期各状态和回调函数使用,Fragments的生命周期Activity息息相关,需要的朋友可以参考下

Android之Fragment生命周期及使用

Fragment是在Android 3.0 (API level 11)开始引入新的API技术。 每个Fragment有自己的布局,有自己的生命周期。 为了提高代码重用性和改善用户体验,我们将Activity中的UI组件进行分组和模块化管理。这些分组后的UI组件就是Fragment。 一个Activity页面中可以包含多个Fragment模块,而同一个Fragment模块也可以被多个Activity使用。 Fragment的概念: Fragments必须放在一个Activity中 Fr...

哈哈哈哈哈哈哈哈的博客 1907

Fagment生命周期Activity生命周期

Fagment生命周期: http://blog.csdn.net/forever_crying/article/details/8238863 很详细,现在补充一下fragment通过intent跳转Activity过程中fragmentActivity生命周期 场景演示 :  FragmentManager切换到该Fragment 11-29 14:26:35

zwx622的专栏 890

Android开发— Activity生命周期fragment生命周期

(图片就借鉴一下其他作者的,见谅!) Activity生命周期在业务逻辑上的处理一定要慎重!!! Fragment生命周期同样十分重要,并且要常用frgment懒加载方案更要注意这种方式,其生命周期图 同时我们都知道 Fragment 是依赖于 Activity 存在的,它们的生命周期很相似;同样的有一张图说明了 在案列和原理得到可以得到: Fragment的onAttach() 和 o...

Mocarcher的博客 1496

activityfragment生命周期的使用

activityfragment生命周期的使用

hxa12345的博客 1001

Fragment生命周期的理解以及其Activity的关联

Fragment生命周期的四种状态 FragmentActivity类似,也存在运行状态、暂停状态、停止状态和销毁状态。 运行状态:当前Fragment位于前台展示,可见,可获取焦点。 暂停状态:其他Activity位于前台,该Fragment可见,不能获取焦点。 停止状态:当前Fragment不可见,失去焦点。 销毁状态:当前Fragment被删除,或所在Activity被结束。 Fragment的回调函数 Fragment为11个,Activity不同的有5个。分别为: onAttach()

weixin_45828419的博客 572

Fragment生命周期结合Activity生命周期

Fragment生命周期

下午吃早餐同学 283
上一篇: 新手必备的常用代码片段整理(三)
下一篇: 判断是否连接网络以及是否是局域网
jkdev
博客等级 码龄14年 23粉丝 29原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值