總結系列 Activity啟動模式

2021-07-04 19:44:49 字數 2093 閱讀 3270

activity作為android中重要一環,它有4種不同的啟動模式,類似於c語言中的區域性變數、全域性變數及靜態變數等。這4種啟動模式如下。 

 standard:標準模式,呼叫startactivity()方法就會產生乙個新的例項。

 singletop:檢查是否已經存在了乙個例項位於activity stack的頂部,如果存在就不產生新的例項, 反之則呼叫activity的newinstance()方法產生乙個新例項。

q: 若已經存在乙個例項但是不位於activity stack的頂部,會不會建立新的例項?   會建立

 singletask:在乙個新的task中產生這個例項,以後每次呼叫都會使用此例項,而避免產生新的例項。 

 singleinstance:這個基本上跟singletask一樣,只是有一點不同,那就是在這個模式下的activity例項所處的task中,只能有這乙個activity例項,而不能有其他的例項。

這些啟動模式在android清單檔案androidmanifest.xml中,通過中的launchmode 屬性進行設定。

4.4.1   standard標準模式

在standard模式也就是預設模式下,不需要配置launchmode。

androidmanifest.xml中**如:

4.4.2   singletop

singletop 和 standard 模式,都會將intent 傳送到新的例項(如果已經有了,singletask 模式和 singleinstance模式不傳送到新的例項)。不過,singletop要求如果建立intent時棧頂已經有要建立activity的例項,則將intent傳送給該例項,而不傳送給新的例項。 還是用剛才的示例,只需activity2的launchmode 改為singletop,就能看到區別。

修改後androidmanifest.xml中**如**:

singletop模式,可用來解決棧頂多個重複相同的activity的問題。

4.4.3   singletask

singletask模式和後面的singleinstance模式都是只建立乙個例項的。 

當intent到來,需要建立singletask模式activity時,系統會檢查棧裡面是否已經有該activity的例項。

如果有直接將intent傳送給它(

注意此時原在此activity棧中上面的activity將會被關閉

)。 4.4.4   singleinstance

在singleinstance模式下,載入該activity時如果沒有例項化,它會在建立新的task後,例項化入棧,如果已經存在,則直接呼叫onnewintent,該activity的task中不允許啟動其他的activity,任何從該activity啟動的其他activity都將被放到其他task中,先檢查是否有在應用的task,沒有的話就建立。

在這裡介紹一下task(任務)的概念。按照字面意思,任務就是自己要實現的乙個目的,而在android中的task的定義是一系列activity的集合,即要達到自己最終要到的actvity,之前所有經歷過的actvity的集合。它可以是同乙個應用內部的,也可以是兩個不同應用的。task可以認為是乙個棧,可放入多個activity。比如,啟動乙個應用,那麼android就建立了乙個task,然後啟動這個應用的入口activity,就是intent-filter中配置為main和launch的那個。這個activity是根(root)activity,可能會在它的介面呼叫其他activity,這些activity如果按照上面那3個模式,也會在這個棧(task)中,只是例項化的策略不同而已。

android task概念以及相關

android task:

開發技巧:通過startactivityforresult獲取另外乙個activity相關的資料,第二個activity的啟動模式不能是singletask, 否則不能返回資料直接退出。

原因是使用singletask啟動模式的時候,如果當前棧中存在這樣乙個activity,那麼這個activity之上的activity會被全部清除出棧,使當前activity處於當前棧頂。

Activity的啟動模

四種啟動模式 standard,singletop,singletask,singleinstance 通過在androidmanifest.xml的標籤中指定android launchmode屬性來設定啟動模式 standard standard是活動的預設啟動模式,我們知道android是通過...

Android歷程 Activity啟動模式

在android中的activity包含有四種啟動模式,分別為standard singletop singletask與singleinstance他們之間彼此聯絡,有各有各的特點 下面進行一下細緻的了解 1 standard standard為標準啟動模式,每次啟用時都會建立乙個新的activi...

Android基礎 Activity啟動模式

在android中,活動的管理是通過返回棧來控制的,每當啟動乙個新的活動,它就會在返回棧中入棧。活動的啟動模式就是控制活動進入返回棧的方式,包括standard singletop singletask和singleinstance四種。每次都會在返回棧頂層加入新的活動,standard是活動預設的...