在开发过程中,Activity的生命周期伴随业务、动画,也是最基础
- oncreate()
- onstart() // onRestart()
- onResume()
- onPouse()
- onStop()
- onDestory()
当A (Activity)-> B(Activity) UI页面,执行流程
- A(Activity): onCreate() -> onStart() -> onResume() -> onPouse()
- B(Activity): onCreate() -> onStart() -> onResume()
- A(Activity): onStop() -> onDestory()
当A (Dialog)-> B(Activity) UI页面,执行流程
- A(Activity): onCreate() -> onStart() -> onResume() -> onPouse()
- B(Activity): onCreate() -> onStart() -> onResume()
Activity生命周期的四种状态
- running 当前显示在屏幕Activity的任务顶端,处于用户端可见状态
- poused 依旧处于用户可见状态,但是界面的焦点已经失去,此时的Activity无法与用户进行交互
- stopped 用户看不到当前界面,也无法与用户进行交互,完全被覆盖
- killed 当前界面被销毁,等待这个系统被回收
onSaveInstanceState(Bundle outState)
参数outState:数据保存,当Activity声明的周期结束的时候,需要保存Activity状态的时候,会将要保存的数据已键值对的形式保存在Bundel对象中。
调用时机:
- Activity 被销毁的时候调用,也可能没有销毁就调用
- 按下Home键,Activity进入了后台,此时会调用该方法
- 按下电源键,屏幕关闭,Activity进入后台
- Activity被压入任务栈的栈底
- 横竖屏切换,会销毁当前Activity并且重新创建
需要注意的是:当用户主动销毁不会调用,点击返回Back,或者是主动调用finish()方法,不会调用该方法,调用时机不确定,但是该方法一定是在onStop()方法之前调用,但是不确定是在onPause()方法之前还是调用之后。
onRestoreInstanceState(Bundle outState)
在Activity被系统销毁之后,且恢复Activity时被调用,只有销毁了之后重建的时候才调用,如果系统内存充足,系统没有销毁这个Activity,就不需要调用