Activity的启动模式小总结

Fighting.jpg

Activity的LauchMode

standard:标准模式
每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。
不能用ApplicationContext去启动standard模式的Activity,因为standard模式下的Activity默认会进入启动它的Activity所属的任务栈,但是非Activity类型的Context并没有所谓的任务栈。
singleTop:栈顶复用模式
如果新的Activity已经位于任务栈的栈顶,此Activity不会被重建(此Activity的onCreat,onStart不会被系统调用);如果新的Activity的实例存在但是不位于栈顶,那么新的Activity仍然会被重建。
singleTask:栈内复用模式。单实例模式
只要Activity在一个栈中存在,多次启动此Acitivity都不会重新创建时。
singleInstance:单实例模式(加强版的singleTask)
具有singleTask的所有特性,同时具有singleInstance模式下的Activity只能单独地位于一个任务栈中。

Activity的Flags

FLAG_ACTIVITY_NEW_TASK 指定Activity为“singleTask”
FLAG_ACTIVITY_SINGLE_TOP 指定Activity为“singleTop”
FLAG_ACTIVITY_CLEAR_TOP 具有此标记的Activity,启动时,同一任务栈所有位于它上面的Activity都要出栈,一般和singleTask启动模式一起出现
FLAG_ACTIVITY_EXCLUDE_FROM_RECENETS 具有此标记的Activity不会出现在历史Activity的列表中。XML属性:android:excludeFormRecents="true"

后记

参考《Android开发艺术探索》
知识简单仅供复习,有关AMS相关的等研究后再补

你可能感兴趣的:(Activity的启动模式小总结)