對Android的啟動模式不是很了解,這裡記錄下簡單的理解內容以便日後查看。
Androi的四種啟動模式分別為:standard,singleTop,singleTask,singleInstance。為Activity指定啟動模式有兩種方法,第一種是通過AndroidManifest.xml中為Activity指定添加launchMode
第二種就是通過Intent來設置標志位來指定Activity的啟動模式,兩者有區別,優先級上是第二種高於第一種。
standard是系統默認的啟動模式,也就是說設不設置launchMode都是標准模式,每次啟動一個Activity都會重新創建一個新的實例,如有個Activity為A跳轉本身時,A->A1->A2,都會產生新的界面,當按back鍵時後退順序為A2->A1->A,依次退出。
singleTop與設置標記位FLAG_ACTIVITY_SINGLE_TOP效果相同,當該實例位於棧頂時就不再創建同時onNewIntent方法會被回調,在此方法中可以得到回調信息,如Activity A跳轉本身,點擊多次都不再跳轉新的界面,但是當A->B->A1時,A不在棧頂產生新的實例A1,退出時A1->B->A。
singleTask與設置標記位FLAG_ACTIVITY_NEW_TASK效果相同,與singleTop一樣系統會回調其onNewIntent方法,當跳轉本身時不會再產生新實例,如果已有實例會把其調到棧頂,如果沒有則會創建並壓入棧中,如A->B->C->A,A為singleTask如果此時退出則直接退到桌面,因在A實例已存在把其調到棧頂時會把棧內A上面的BC全部出棧,如A->B->C,退出時C->B->A。
singleInstance比較復雜其擁有singleTask的特性又加強了一點,具有此種模式的Activity只能單獨的位於一個棧內。當跳轉本身時也不會再產生新的實例,當A->B->C->B,此時B為singleInstance模式,退出時為B->C->A,當A->B->C,退出為C->A->B,因此時B在一個棧內,A與C在另一個棧內,一個棧內退出後再退另一個棧。