ActivityStack笔记
ActivityStack作用:管理当前Activity的状态
ActivityState描述了一个Activity所可能经历的所有状态
enum ActivityState {
INITIALIZING,
RESUMED,
PAUSING,
PAUSED,
STOPPING,
STOPPED,
FINISHING,
DESTROYING,
DESTROYED,
RESTARTING_PROCESS
}
ActivityRecord负责记录每个Activity的运行时信息
还有一些ArrayList保存了Activity的信息
android:taskAffinity 代表这个Activity所希望所属的Task,在默认情况下,同一个应用程序中拥有共同的Affinity
不同标签情况:
1、带有FLAG_ACTIVITY_NEW_TASK时,代表它希望重新开设一个Task,判断是否有Task的affinity与新的Activity一样。是:用此Task完成操作;否:重启一个Task。
2、allowTaskReparenting为true,该情况下Activity具有动态转移的能力,被启动的Activity会被挪动到它更亲近的Task中。
android:launchMode
standard:默认状态,归属于startActivity将其启动的那个task,指明了FLAG_ACTIVITY_NEW_TASK例外
singleTop:判断栈顶是否是目标Activity,是的话 intent通过newIntent传递给Activity
singTask:单实例,且永远在新task的根位置,允许其他Activity加入它所在的Task
singleInstance:不允许其他Activity进驻到它所在的task中。
其他属性:
android:clearTaskOnLaunch 清除Task中除root activity的元素,仅root activity设置有效
android:alwaysRetainTaskState 如果用户在一定时间内不再访问Task,那么系统有可能会清除task中的状态(只保留root activity)
参考:
《深入理解Android内核设计思想》