Activity四种加载模式
1.standard:标准模式,这也是系统的默认模式,每次启动activity都会创建一个新的实例。
2.singleTop:栈顶复用模式,如果新activity位于栈顶就不会被重建,同时它的onNewIntent方法会被回调。
3.singleTask:栈内复用模式,系统首先会寻找是否存在activity想要的任务栈,如果不存在就创建任务栈,然后创建activity的实例放到栈中,如果存在activity想要的任务栈,看栈中是否有activity的实例存在,如果存在就把activity调到栈顶,同时它的onNewIntent方法会被回调。,如果不存在就创建实例。
4.singleInstance:这是一种加强的singleTask模式,具有singleTask的所有特性,具有此种模式的activity只能单独的位于一个任务栈中,当activity启动后,系统会为它创建一个新的任务栈。
dumpsys命令
adb shell dumpsys activity
Intent的常用Flag参数
1.FLAG_ACTIVITY_CLEAR_TOP:一般会和“singleTask”启动模式一起出现,如果被启动的activity采用standard模式启动,那么它连同它之上的activity都要出栈,系统会创建新的activity实例并放入栈顶。
2.FLAG_ACTIVITY_NEW_TASK:同“singleTask”启动模式。
3.FLAG_ACTIVITY_NO_HISTORY:例如现在栈情况为:A B C。C通过intent跳转到D,这个intent添加FLAG_ACTIVITY_NO_HISTORY标志,则此时界面显示D的内容,但是它并不会压入栈中。如果按返回键,返回到C,栈的情况还是:A B C。如果此时D中又跳转到E,栈的情况变为:A B C E,此时按返回键会回到C,因为D根本就没有被压入栈中。
4.FLAG_ACTIVITY_SINGLE_TOP:同“singleTop”启动模式。
5.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:不会出现在历史列表中,不希望通过历史列表返回activity时这个标记比较有用,等同于在XML中指定activity的属性 android:excludeFromRecents="true"