Android开发艺术探索学习笔记——Avtivity生命周期和启动模式
Activity生命周期
正常情况下的生命周期:
Activity启动中的核心对象:
1、 Instrumentation:一个辅助类。作用:1、创建application2、管 理生命周期 3、启动activity
2、 ActivityThread:这是一个类而非线程,里面的main方法是主线程的入口。
3、 ApplicationThread:一个实现了Binder的子类,存在的目的是和AMS通信。
异常情况下的生命周期:
1、 旋转屏幕
系统会自动调用onSaveInstanceState和onRestoreInstanceState
2、 内存不足
销毁顺序:后台Activity à可见但非前台Activityà前台Activity
Activity的启动模式
四种启动模式:
Standard、singleTop、singleTask、SingleInstance。
重点是关注栈和的关系。
Standard启动:ABCD,启动standard的D为ABCDD
singleTop启动:ABCD,启动SingleTop的D为ABCD,顶上的若有则不重建。
SingleTask启动:ABCD,启动SingleTask的A
1、 为A寻找想要的stack,没有就创建
android:taskAffinity="任务栈名"
2、有就clearTop,把A之前的清掉
SingleInstance启动:是加强版本SingleTask,具备了SingleTask的所有属性外,它极为排外,有它在则之后的所有Activity都不会新建,除非被销毁。
前台任务栈和后台任务栈:
通过android:taskAffinity="新包名"来开启新的任务栈,然后后台就会有前台任务栈和后台任务栈。
前台任务栈:AB 后台任务栈为CD;当打开D的时候任务栈会合并为ABC。
Activity的Flags
设置启动模式:
FLAG_ACTIVITY_NEW_TASK:
singleTask模式。
FLAG_ACTIVITY_SINGLE_TOP:
SingleTop模式。
FLAG_ACTIVITY_CLEAR_TOP:
具有clearTop属性的启动。
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:
将activity排除出栈。
InterFilter的匹配:
匹配的标签有:action、category、data
action:
一个过滤规则中可以有多个action,只要任何一个action相同即可匹配成功。
category:
category可以没有,但是一旦有,就需要每个都匹配才行
data:
由两部分组成:
mimeType(资源类型)和URI(全局资源标识符)