AndroidMainfest啓動模式

AndroidMainfest啓動模式主要有4種,分別是standard singleTop singleTask singleInstance

1.standard
默認的啓動模式,如果不指定Activity的啓動模式,則使用這種方式啓動Activity。這種啓動模式每次都會創建新的實例,每次點擊standard模式創建Activity後,都會創建新的MainActivity覆蓋在原Activity上。

2.singleTop
如果指定啓動Activity爲singleTop模式,那麼在啓動時,系統會判斷當前棧頂Activity是不是要啓動的Activity,如果是則不創建新的Activity而直接引用這個Activity;如果不是則創建新的Activity。這種啓動模式通常適用於接收到信息後顯示的界面。如QQ接受到消息後彈出Activity,如果一次來10條信息,不可能一次彈出10個Activity。
注意,這種啓動模式雖然不會創建新的實例,但是系統仍然會在Activity啓動時調用onNewIntent()方法。舉個例子來說,如果當前任務棧中有A,B,C三個Activity,而且C的啓動模式是singleTop的,那麼這個時候如果再次啓動C,那麼系統就不會創建新的C的實例,而是會調用C的onNewIntent()方法,當前任務棧中依然是A,B,C三個Activity。

3.singleTask
singleTask模式與singleTop模式類似,只不過singleTop是檢測棧頂元素是否是需要啓動的Activity,而singleTask是檢測整個Activity棧中是否存在當前需要啓動的Activity。如果存在,則將該Activity置於棧頂,並將該Activity以上的Activity都銷燬。不過這裏是指在同一個APP中啓動這個singleTask的Activity,如果是其他程序以singleTask模式來啓動這個Activity,那麼它將創建一個新的任務棧。不過這裏有一點需要注意的是,如果啓動的模式爲singleTask的Activity已經在後臺一個任務棧中了,那麼啓動後,後臺的這個任務棧將一起被切換到前臺

4.singleInstance
singleInstance這種啓動模式和使用的瀏覽器工作原理類似,在多個程序中訪問瀏覽器時,如果當前瀏覽器沒有打開,則打開瀏覽器,否則會在當前打開的瀏覽器中訪問。申明爲singleInstance的Activity會出現在一個新的任務棧中,而且該任務棧中只存在這一個Activiyty。舉個例子來說,如果應用 A的任務棧中創建了MainActivity實例,且啓動模式爲singleInsance,如果應用B也要激活MainActivity,則不需要創建,兩個應用共享該Activity實例。這種啓動模式常用於需要與程序分離的頁面,如SetupWizard中調用緊急呼叫。

以上就是AndroidMainfest的四種啓動模式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章