Activity的生命周期
Activity的活动状态
running/paused/stop/kill
Running: 用户可以点击屏幕,且屏幕会做出相应的反应,活动处于activity任务栈栈顶,是最不可能被回收的activity。
Paused: 活动失去焦点(被一个对话框、一个非全屏或透明的activity占据栈顶),导致当前activity处于暂停状态,活动处于任可见状态,但已失去交互功能。当系统内存紧张时,才会回收这个状态下的activity。
Stopped: 当另一个活动完全覆盖当前活动,当前活动不再处于栈顶,且不可见,则是处于Stopped,系统内存较低时,才会回收这个状态的活动。
Killed: Activity已被系统回收,activity的成员变量等信息已经不存在了.
Activity的生存期
- 完整生存期: onCreate() ~ onDestroy(), 在onCreate() 中完成初始化操作, onDestroy() 中释放内存。
- 可见生存期: onStart() ~ onStop(), 在这个期间,活动对于用户是可见的,但是可能不能与用户进行交互, 在onStart() 中对资源进行加载, 在 onStop() 中对资源进行释放, 来保证停止状态下活动不会占用太多内存。
- 前台生存期: onResumr() ~ onPause(), 在这个阶段,活动总是处于运行阶段,此时活动是可以和用户进行交互的。
Activity的启动模式
- Standard (标准模式) : 每次启动一个activity,都会创建一个新的activity的实例,并将它加到任务栈中。不考虑是否已经有这个activity的实例。
- SingleTop (栈顶复用) : 如果要开始的activity已经位于栈顶,则再次复用这个activity
- SingleTask (栈内复用):如果要开始的activity已经在栈内,则将这个activity以上的activity全部移出栈,并将这个activity置于栈顶.
- SingleInstance (单实例模式):用一个全新的栈来管理这个activity。
下一篇我们再接着讨论fragment吧^^
送大家一朵大勋❀