您的位置:首页 > 其它

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

2016-07-05 11:07 387 查看
在学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键或者锁屏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息