【学习笔记】 Activity/Fragment 生命周期

正文:

/* 以下只针对Activity */
1. 活动(Active/Running):Activity运行在屏幕前台(处于当前任务活动栈最上面),获取到用户焦点,可以响应用户操作;
2. 暂停(Paused):Activity失去焦点,但仍对用户可见(例如,其上有另一个透明的Activity或者Toast、AlertDialog等)。此时,仍处于存活状态,保存所有状态、成员信息和窗口管理器连接。但当系统内存极小时可以被系统杀掉;
3. 停止(Stopped):完全被另一个Activity遮挡,仍保留所有状态和成员信息。对用户不可见,当其他应用需要内存时会被系统杀掉;
4. 非活动(Dead):Activity尚未被启动、已经被手动终止,或已经被系统回收时处于非活动状态。

回调函数 是否可见 是否在前台 说明
onCreate 不可见 未获焦点 正在被创建,加载布局资源,
初始化所需数据
onStart 可见 未获焦点 正在被启动
onResume 可见 获取焦点 出现在前台并开始活动
onPause 可见 未获焦点 正在被暂停,
可做回收数据和停止动画工作,
但不能太耗时
onStop 不可见 未获焦点 即将被停止,
可做稍微重量级回收工作,
同样不能太耗时
onDestroy 不可见 未获焦点 即将被销毁,
回收和最终释放资源

特别说明:
1. 如果SecondActivity采用透明主题,那么FirstActivity不会回调onStop。
2. Activity切换顺序如下:FirstActivity.onPause -> SecondActivity.onCreate -> SecondActivity.onStart -> SecondActivity.onResume -> FirstActivity .onStop
3. 基于第2点,不能再onPause中做耗时操作,否则影响界面切换。

/* 异常情况下的生命周期 */
1. 系统配置发生改变,Activity被销毁,onPause、onStop、onDestroy会被调用。
2. Activity在异常情况下被终止,onSaveInstanceState会保存当前Activity状态。在onStop之前被调用。
3. Activity被重新创建以后,系统会调用onRestoreInstanceState,并传递被销毁前保存的状态。
4. 在onSaveInstanceState和onRestoreInstanceState方法中,系统自动完成一些恢复工作,包括Activity视图结构、文本框中用户输入的数据、ListView滚动的位置等。因为View自带onSaveInstanceState和onRestoreInstanceState方法。(委托流程:Activity -> Window -> ViewGroup -> View)
5. 在onCreate方法中需要判断savedInstanceState是否为空,但是在onRestoreInstanceState方法中不需要。因为调用了onSaveInstanceState,savedInstanceState在onRestoreInstanceState中就一定不为空。官方文档建议采用onRestoreInstanceState恢复数据。

/* Activity被杀死先后顺序 */
后台Activity > 可见但非前台Activity > 前台Activity



文献:
PDF下载:complete_android_fragment_lifecycle.pdf
感谢张大神:http://stormzhang.com/android/2014/08/08/activity-fragment-lifecycle/
感谢任大神:《Android 开发艺术探索》

你可能感兴趣的:(【学习笔记】 Activity/Fragment 生命周期)