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键或者锁屏
说白了主要看两张图,和运行代码:
一. 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实现将一个Activity设置成窗口样式的方法
- Android Activity 完全结束并退出程序的实例
- Android开发 旋转屏幕导致Activity重建解决方法
- android横竖屏切换时候Activity的生命周期
- Android学习笔记--使用剪切板在Activity中传值示例代码
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- android PopupWindow 和 Activity弹出窗口实现方式
- Android Fragment 基本了解(图文介绍)
- Android一次性退出多个Activity的方法
- Android开发中关于获取当前Activity的一些思考
- Android开发中Activity属性设置小结
- Android程序开发之Fragment实现底部导航栏实例代码
- Android应用开发中Fragment与Activity间通信示例讲解
- Android新建Activity的方法
- Android的activity学习笔记
- 详解Activity之singletast启动模式及如何使用intent传值
- Android编程实现两个Activity之间共享数据及互相访问的方法
- Android编程之四种Activity加载模式分析
- Android的Activity加载方式实例分析
- Android Activity设置全屏