本篇主要复习Activity的清单如下:
* 生命周期解析
* 四种启动模式
一.生命周期的全解析
1.Q:典型情况下Activity的生命周期
a.onCreater()
状态:Activity正在初建
任务:做初始化工作,如setViewContent界面资源,初始化数据
注意:此方法的传参Bundle为该Activity上次被异常情况销毁时保存的状态信息
b.onStart()
状态:Actvity正在启动,这时Activity可见但不在前台,无法跟用户交互
c.onResume()
状态:Activity获得焦点,此时Actvity可见且在前台活动.
d.onPause()
状态:Activity正在停止,这时Activity前台可见但无法与用户交互,
任务:可做数据存储,停止动画等操作.
注意:Activity切换时,旧Activity的onPause会先执行,才会启动新的Activity
e.onStop()
状态:Avtivity即将停止
任务:可做稍微轻量级回收工作,如取消网络连接,注销广播接收器等
注意:新Activity是透明主题时,旧Activity就不会走onStop.
f.onDestroy()
状态:Activity即将销毁
任务:做回收工作,资源释放。
g.onRestart()
状态:Activity重新启动,Activity由后台切换到前台,由不可见到可见
onStart()跟onResume(),onPause()跟onStop()的区别 :onStart与onStop是从Activity是否可见这个角度调用的,onResume和onPause是从Activity是否显示在前台这个角度来回调的,在实际使用没其他明显区别。
2.Activity生命周期的切换过程
a.启动一个Activity:
- onCreate()-->onStart()-->onResume()
b.打开一个新的Activity:
- 旧Activity的onPause()-->新Activity的onCreate()-->onStart()-->onResume()-->旧Activity的哦那Stop()
c.1返回到旧Activity1:
- 新Activity的onPause()-->旧Activity的onRestart()-->onStart()-->onResume()-->旧Activity的onStop()-->onDestroy();
d.Activity1上弹出对话框Activity2:
- Activity1的onPause()-->Activity2的onCreate()-->onStart()-->onResume()
e.关闭屏幕/按Home键:
- Activity2的onPause()-->onStop()-->Activty1的onStop()
f.点亮屏幕/回到前台:
- Activity2的onRestart()-->onStatr()-->Activity1的onRestart()-->onStart()-->Activty2的onResume()
g.关闭对话框Activity2:
- Activity2的onPause()-->Activty1的onResume()-->Activity2的onStop()-->onDestroy()
h.销毁Activity1:
- onPause()-->onStop()-->onDestroy().
3.Activity生命周期各阶段
a.完整生命周期
Activity在onCreate()和onDestroy()之间所经历的.
在onCreate()中完成各初始化操作,在onDestroy()中释放资源
b.可见生命周期:
Activity在onStart()和onStop()之间所经历的
活动对于用户的可见的,但仍无法与用户进行交互
c.前台生命周期:
Activity在onResume()和onPause()之间所经历的
活动可见,且可交互.
二.Activity四种启动模式
1.Q:设置Activity启动模式的方法
在AndroidManifest.xml中给对应的Activity设定属性
android:launchMode="standard|singleInstance|single Task|singleTop"。
2.Q:Activity的四种launchMode
a.standard
:标准模式, 默认模式
- 含义:每次启动一个Activity机会创建一个新的实例
- 注意:使用ApplicationContext去启动standard模式Activity就会报错。因为standard模式的Activity会默认进入启动它所属的任务栈,但是由于非Activity的Context没有所谓的任务栈。
b.singleTop
:栈顶复用模式
- 含义:如果新Activity已经位于任务栈的栈顶,就不会创建,并回调
onNewIntent(intent)方法
;
c.singleTask
:栈内复用模式
- 含义:只要该Activity在一个任务栈中存在,都不会创建,并回调
onNewIntent(intent)
方法。如果不存在,系统会先寻找是否存在需要的栈,如果不存在该栈,就创建一个任务栈,并把该Activity放进去;如果存在,就会创建到已经存在的栈中。
d.singleInstance
:单实例模式
- 含义: 具有此模式的Activity只能单独位于一个任务栈中,且此任务栈中只有唯一一个实例
希望这篇文章对你有帮助~
参考文档链接:
minmin_1123_要点提炼|开发艺术之Activity
网友评论