standard:標準模式
-
每次啓動app,TaskId都+1
每次點擊按鈕,TaskId不變
-
singleTop:Task頂單例模式
-
當將要被啓動的Activity已經位於Task棧頂的時候,系統不會重新創建目標Activity的實例,而是直接複用已有的Activity實例
-
當將要被啓動的Activity沒有位於Task棧頂的時候,此時系統會重新創建目標Activity的實例,並且把它加載到Task的棧頂(此時與標準模式完全相同)
-
singleTask:Task內單例模式(A是standard,B是singleTask)
-
A->B,Task棧裏面由下往上,A->B,B裏面點擊按鈕,跳轉到A,A是standard
-
Task棧裏面由下往上,A->B->A,在這個A再點擊跳轉到B,B是singleTask,系統將B上面所有的Activity移出,讓B進入棧頂,此時Task棧裏面只有兩個,A->B
B移除 |
A移除 |
B |
A |
【注意點】:
如果將要啓動的目標Activity已經存在,但是沒有位於棧頂,系統會把位於該Activity上面的所有Activity移除Task棧,使得目標activity轉入棧頂
singleInstance:全局單例模式
系統保證無論從那個Task中啓動目標Activity,只會創建一個目標Activity實例,並會使用一個全新的Task棧來裝載該Activity實例