生命周期
七个方法
onCreate
在这里创建界面, 做一些数据的初始化工作onStart
可见不可交互onResume
可见可交互onPause
可见但不可交互的, 系统会停止动画等消耗CPU的任务. 应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低, 有可能被系统收回. 在这里保存的数据, 应该在onResume()
里读出来. 注意: 这个方法里做的事情时间要短, 因为下一个 activity 不会等到这个方法完成才启动变得不可见.onstop
变得不可见,被下一个 activity 覆盖了onRestart
重新可见onDestroy
摧毁 activity
生命周期图
常见应用场景
- 启动:
onCreate()—>onStart()—>onResume()
, Activity进入运行状态. - 退居后台: 当前 Activity 转到新的 Activity 界面或按Home键回到主屏:
onPause()—>onStop()
, 进入停滞状态. - 返回前台:
onRestart()—>onStart()—>onResume()
, 再次回到运行状态. - Activity 退居后台, 且系统内存不足, 系统会杀死这个后台状态的 Activity (此时这个Activity引用仍然处在任务栈中,只是这个时候引用指向的对象已经为null), 若再次回到这个Activity, 则会走
onCreate()–>onStart()—>onResume()
(将重新走一次Activity的初始化生命周期) - 锁定屏与解锁屏幕, 只会调用
onPause()
, 而不会调用onStop()
方法, 开屏后则调用onResume() - 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时就会 onPause. 这时它仍然可见. 只是失去焦点, 不可与用户交互.
可能的问题
- 画生命周期图
onStart()
与onResume()
有什么区别?
onStart()
方法在onCreate()
方法之后被调用或者在 Activity 从 Stop 状态转换为 Active 状态时被调用, 一般执行了onStart()
后就执行onResume()
onResume()
在 Activity 从 Pause 状态转换到 Active 状态时被调用. 使 Activity 获得用户焦点, 可以再与用户交互.