標籤:
1、一個應用程式一般都是由多個activity組成的,任務棧(task stack),記錄和存放使用者開啟的activity。
2、當一個應用程式被開啟時,系統就會給他分配擬一個任務棧,當任務棧中所有的activity都退出的時候,任務棧就清空了。任務棧中的id是一個integer的資料類型(自增長的)。
3、在android作業系統裡面會存在多個任務棧,一個應用程式對應一個任務棧。
4、預設情況下,關閉掉一個應用程式,系統就會清空了這個應用程式。但是應用程式的進程還會被保留
為什麼要引入任務棧的概念?
為了記錄使用者開啟了哪些activity,記錄這些activity開啟的先後順序,Google引入任務棧(task stack)的概念,為了擁有更好的使用者體驗。
activity的啟動模式中可以指定任務棧的模式:
在AndroidManifest.xml中對指訂activity進行配置:
<activity android:name=".MainActivity" android:launchMode="singleInstance">
四種啟動模式:
1、standard 預設標準的啟動模式,每次startActivity都是建立一個新的activity執行個體
2、singleTop 單一頂部模式,如果要開啟的activity在任務棧的頂部已經存在,就不會建立新的執行個體,而是直接使用這個頂部執行個體
3、singleTask 單一任務棧,如果在棧中已經有該activity的執行個體,就重用該執行個體,會調用執行個體的onNewIntent()。重用時,會讓該執行個體回到棧頂,因此在它上面的執行個體將會被移除棧。如果當中不存在該執行個體,將會建立新的執行個體放入棧中。注意:singleTask模式的Activity不管是位於棧頂還是棧底,再次運行這個Activity時,都會destory掉它上面的Activity來保證整個棧中只有一個自己,切記切記”這點是毋庸置疑的。
4、singleInstance 單態 單例模式 單一執行個體,整個手機作業系統裡面只有一個執行個體存在,activity總是在棧的頂端(因為他是任務中唯一的一個activity),所以總是能夠適當的處理行為
(轉)Android學習筆記 --- android任務棧和啟動模式