1.intent 決定Activity所在的Task(Activity 堆棧)
對於"standard" 和 "singleTop" 模式, 是task在產生intent,除非intent裡設定了FLAG_ACTIVITY_NEW_TASK 標誌,設定了此標誌,這個activity將選擇另外一個task。
相對的 singleTask 和 singleInstance 模式標記activity作為一個task的根,他們永遠不會選擇另外一個task。
2.一個activity可以不可以有多個執行個體?
“standard" or "singleTop" 模式的activity可以被執行個體化多次,而且可以屬於多個task,一個task也可以包含一個activity類的多個執行個體。
3.一個activity的執行個體允不允許他所在的task包含其他activity類的執行個體?
singleInstance 的activiy是它所在的task裡頭唯一的activity。其他activity的執行個體都將被分配到其他task不管intent 有沒有 FLAG_ACTIVITY_NEW_TASK 標誌。除了這一點,它和 singleTask是一樣的。
4.是否一個新的執行個體會被啟動來響應新的intent?
standard Acticity會啟動新執行個體響應每一個新的intent請求。在 singletop 模式下,如果這個activity在activity棧的最上邊,他的執行個體會被複用,否則會產生新的執行個體。
永遠不會有多餘一個的執行個體當處於singleTask 和 singleInstance 模式。singleInstance所在的棧只有一個執行個體,所以它處在服務新的intent的位置上。 但是
singleTask 的task可能會有多個activity執行個體,而且singleTask 的activity不一定在最上邊,遇到這種情況,intent會被丟掉,但是task依然會被激發而轉到前台顯示。