1. 程式人生 > >Android活動啟動模式簡介

Android活動啟動模式簡介

android活動的啟動模式

Android一共有四種啟動活動的方式,分別是standard、singlTop、singleTask、singleInstance,我們可以通過在主配置檔案,也就是AndroidManifest.xml中在activity標籤中指定android:launchMode屬性來指定自己想要的啟動模式

1.standard(標準模式)

這是預設的啟動模式,也就是說即使你不對launchMode指定任何屬性,系統會預設選擇該屬性來執行。我們知道android是通過返回棧來管理活動的,在standard模式下,每當我們啟動一個新的活動後,他就會進入返回棧的棧頂位置,該模式下啟動的活動,系統不會管這個活動在棧中是否存在,每次都會重新建立一個新活動的例項物件。
standard模式原理圖

2.singleTop(棧頂模式)

當你指定launchMode為singleTop時,在啟動新的活動的時候,系統會在棧中進行檢查,如果發現該活動已經處於返回棧的棧頂位置,那麼將不在建立新的活動例項,而是直接返回改活動例項。
singleTop原理示意圖

3.singleTask(單棧模式)

當指定活動啟動模式launchMode指定為singleTask時,每次啟動新的活動的時候,系統首先回去檢查棧中是否存在改活動的例項物件,如果有,不論改活動的例項物件處於棧中的任何位置,都會將它提到棧頂,並且將在棧中位置處於他上方的的所有活動物件出棧。如果沒有發現該活動的例項物件,系統就會建立一個新的例項物件。
singleTask原理示意圖

4.singleInstance

這種模式是最為特殊的一種模式,它特殊在哪裡呢?它就特殊在 當你指定活動啟動模式為singleInstance的時候,該活動會啟用一個新的返回棧,來管理這個活動。那它到底有什麼用呢?如果我們的某個活動可以被其他用用程式呼叫,即與其他程式共享該活動例項,使用前面三種方式是無法達到要求的,因為每個應用程式都有自己的棧,同一個活動在不同返回棧中入棧時候必然會建立新的例項物件。而該模式下就解決了這個問題,該模式下會有一個單獨的返回棧來管理這個活動,不管哪個程式來訪問這個活動,都將會公用一個返回棧。
singleInstance原理示意圖