學習記錄自《Android開發藝術探索》.
Activity的LaunchMode分爲四種
1,standard:標準模式,默認模式,每個Activity都會創建實例,不管是否已存在.
2,singleTop:棧頂複用模式.如果Activity已位於棧頂,那麼複用,並回調onNewIntent()方法.否則創建新的實例.
3,singleTask:棧內複用模式.單實例模式,只要棧內存在要啓動的Activity的實例,就不會創建新的實例.
4,singleInstance:此模式Activity只能單獨的位於一個任務棧中,且只有一個實例.
Activity設置啓動模式的方法
1,通過AndroidMenifest爲Activity指定啓動模式
<activity
android:name=".NormalActivityLife"
android:launchMode="singleInstance" />
2,通過Intent設置標誌位爲Activity設置啓動模式
Intent intent = new Intent(this,NormalActivityLife.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Tips:
1,第二種啓動方式優先級高於第一種,當兩種都存在的時候,以第二種爲準2,清單文件中無法爲Activity設置FLAG_ACTIVITY_CLEAR_TOP標識.
3,代碼中無法爲Activity指定singleInstance模式.
Activity的常見Flags
1,FLAG_ACTIVITY_NEW_TASK:爲Acitivity指定”singleTask”模式.
2,FLAG_ACTIVITY_SINGLE_TOP:爲Activity指定”singleTop”模式.
3,FLAG_ACTIVITY_CLEAR_TOP:具有此標記的Activity啓動時,位於其上的Activity都要出棧,一般會與singTask啓動模式一起出現.被啓動的Acitivity如果存在,系統會調用它的onNewIntent.