Android啓動模式分爲四種,分別爲:standard、singleTop、singleTask、singleInstance.net
stander 標準啓動模式:blog
這是Activity默認的啓動模式,也是邏輯最簡單的一種,只要Activity使用這種模式進行啓動,系統會無論三七二十一,直接create一個Activity實例出來,而後加入到Task頂。
進程
2. singleTop:
it
這中啓動模式和standard的最大區別,就是它在啓動時會檢查Task頂部是否已經存在該Activity實例,if 存在 則重用已經存在的實例,else 從新建立一個activity實例並加入task頂部。
程序
3.singleTaskactivity
這種啓動模式相對於上面兩個,就比較複雜。若是activity以這種模式啓動,會執行下面的流程:
vi
a)系統會先爲這個Activity加上Flag_new_task 的標籤
標籤
b)獲取該activity的 taskAffinity屬性(該屬性默認爲應用程序的包名)
生成
c)檢查系統中是否已經存在taskAffinity屬性值所對應的Task:
new
!)若是存在該Task:則先檢查該Task中是否有目標Activity的實例,if存在,則清空該實例以上全部的Activity實例,將該Activity實例放在Task頂部。若是不存在,則從新建立一個該Activity的實例,而且加入到該Task中。
!!)若是不存在該Task,則建立一個新的Task,而且建立目標Activity並將其加入到Task頂端。
4.singleInstance
這種模式啓動Activity,會放置在一個單獨的Task中,並且這個task中只有着一個activity,系統會保證其全系統惟一性。若是在這類Activity啓動新的Activity則所啓動的Activity有可能會生成新的Task中或加入到別的已有的task中,這個根據taskAffinity來肯定。
Task的一些特色:Task不單單能夠跨應用,也能夠跨進程進行。
本文參考:http://blog.csdn.net/zhangjg_blog/article/details/10923643