Android Activity详解-生命周期
- Android Activity详解-生命周期
- Activity 的存在状态
- running
- paused
- stopped
- killed
- Activity 的生命周期
- 正常生命周期
- onCreate
- onRestart
- onStart
- onResume
- onPause
- onStop
- onDestroy
- 异常生命周期
- 系统配置改变
- Activity 被系统回收
Activity 的存在状态
running
Activiy 位于屏幕前台,并且具有用户焦点
paused
另一个 Activity 位于屏幕前台,并且具有用户焦点,但此 Activity 仍然可见
stopped
Activity 被另一个 Activity 完全覆盖,该 Activity 位于”后台”
killed
Activity 被销毁
状态 | 是否存在 | 是否可以交互 | 是否可见 |
running | 是 | 是 | 是 |
paused | 是 | 否 | 是 |
stopped | 是 | 否 | 否 |
killed | 否 | 否 | 否 |
注:当Activity内存不足时,会首先关闭 stoped 状态的 Activity,其次才会关闭 Paused 状态的 Activity
Activity 的生命周期
正常生命周期
正常生命周期是指:在正常情况下运行,经过用户操作的情况下的生命周期的改变
**Activity 正常启动时**
onCreate() -> onStart() -> onResume()
**按下 Home 键时**
onPause -> onStop()
**重新回到 Activity 时**
onRestart() -> onStart() -> onResume();
**按下 Back 键时**
onPause() -> onStop() -> onDestroy()
**打开另一个 Activity[2] 时**
onPause() -> [2]onCreate() -> [2]onStart() -> [2]onResume() -> onStop();
onCreate()
首次创建 Activity 时调用,可以在此方法中执行“全局”状态设置,如调用 setContentView() 设置布局,或者将数据绑定到列表等
onRestart()
在 Activity 已停止并即将再次启动前调用,一般 Activity 状态由不可见转为可见,此方法会被调用
onStart()
在 Activity 对用户可见之前调用,Activity 可见但不可交互
onResume()
在 Activity 开始与用户进行交互之前调用,Activity可以交互,具有用户焦点
onPause()
在 Activity 正在停止时调用,此方法通常用于保存数据,停止动画以及其他可能消耗 CPU 的内容,它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行
onStop()
在 Activity 对用户不再可见时调用,表示 Activity 即将停止,可以做轻量级回收工作
onDestroy()
在 Activity 被销毁前调用,这是 Activity 收到的最后调用,当 Activiy 调用了 finish() 或者 系统销毁了 Activity 的实例时,会调用此方法,一般用于回收工作和资源的释放
异常生命周期
异常生命周期是指:Activity 被系统回收或者系统配置改变
系统配置改变
当系统配置改变时Activity 会被销毁, 依次调用onPause()-onStop()-onDestroy(), 并且会调用 onSaveInstanceState() 保存当前 Activity 的状态,这个方法只会在异常情况下调用,当Activity重新创建时,会调用 onRestoreInstanceState() 方法,并把保存的 Bundle 对象传递给此方法和 onCreate() 方法
可以指定 android:configChanges=”orientation” 来使横竖屏切换是不重新创建 Activity
Activity 被系统回收
当系统内存不足时,会按照 Activity 存在状态回收 Activity,并通过 onSaveInstanceState() 和 onRestoreInstanceState() 来存储和恢复数据