Activity 的四種啟動方式

2021-06-26 06:46:29 字數 2601 閱讀 3762

activity 的四種啟動方式 在

android

裡,有4

種activity

的啟動模式,分別為:

「standard」 (

預設)  

所有activity在乙個task任務湛中,新建乙個在task中新增乙個

「singletop」 

所有activity在乙個task中,如果新開啟activity和棧頂

activity相同則直接使用

「singletask」  

所有activity在乙個task中,這個task只有乙個activity,按下回退鍵直接退出

「singleinstance」

每個activity在獨佔task中,開啟n個不同的

activity,

回退鍵按n下後退出

它們主要有如下不同:

1. 如何決定所屬task

「standard」

和」singletop」

的activity

的目標task

,和收到的intent

的傳送者在同乙個task

內,除非intent

包括引數flag_activity_new_task

。如果提供了flag_activity_new_task

引數,會啟動到別的task

裡。「singletask」

和」singleinstance」

總是把activity

作為乙個task

的根元素,他們不會被啟動到乙個其他task

裡。2. 

是否允許多個例項

「standard」

和」singletop」

可以被例項化多次,並且存在於不同的task

中,且乙個task

可以包括乙個activity

的多個例項;

「singletask」

和」singleinstance」

則限制只生成乙個例項,並且是task

的根元素。 singletop

要求如果建立intent

的時候棧頂已經有要建立 的activity

的例項,則將intent

傳送給該例項,而不傳送給新的例項。

3. 是否允許其它activity

存在於本task

內「singleinstance」

獨佔乙個task

,其它activity

不能存在那個task

裡;如果它啟動了乙個新的activity

,不管新的activity

的launch mode 

如何,新的activity

都將會到別的task

裡執行(如同加了flag_activity_new_task

引數)。

而另外三種模式,則可以和其它activity

共存。4. 

是否每次都生成新例項

「standard」

對於沒乙個啟動intent

都會生成乙個activity

的新例項;

「singletop」

的activity

如果在task

的棧頂的話,則不生成新的該activity

的例項,直接使用棧頂的例項,否則,生成該activity

的例項。

比如現在task

棧元素為a-b-c-d

(d在棧頂),這時候給d

發乙個啟動intent

,如果d

是 「standard」

的,則生成d

的乙個新例項,棧變為a

-b-c

-d-d

。如果d

是singletop

的話,則不會生產d

的新例項,棧狀態仍為a-b-c-d

如果這時候給b

發intent

的話,不管b

的launchmode

是」standard」 

還是 「singletop」 

,都會生成b

的新例項,棧狀態變為a-b-c-d-b

。 「singleinstance」

是其所在棧的唯一activity

,它會每次都被重用。

「singletask」

如果在棧頂,則接受intent

,否則,該intent

會被丟棄,但是該task

仍會回到前台。

當已經存在的activity

例項處理新的intent

時候,會呼叫onnewintent()

方法 如果收到intent

生成乙個activity

例項,那麼使用者可以通過back

鍵回到上乙個狀態;如果是已經存在的乙個activity

來處理這個intent

的話,使用者不能通過按back

鍵返回到這之前的狀態。

android:launchmode="singletask"

android:name="com.example.android_activity.secondactivity"

android:label="@string/title_activity_second" >

Activity四種啟動方式

啟動模式簡單地說就是activity啟動時的策略,在androidmanifest.xml中的標籤的android launchmode屬性設定 啟動模式有4種,分別為standard singletop singletask singleinstance 講解啟動模式之前,有必要先講解一下 任務棧...

Activity的四種啟動方式

activity 有四種載入模式 1 standard 模式 這是預設模式,每次啟用activity時都會建立activity例項,並放入任務棧中。2 singletop 模式 如果在任務的棧頂正好存在該activity的例項,就重用該例項 會呼叫例項的 onnewintent 否則就會建立新的例項...

Activity的四種啟動方式

第一種 standard 也是預設方式 launchmode standard 使用標準啟動模式每次都會建立乙個新的activity 第二種 singletop 單頂模式 launchmode singletop 使用單頂啟動模式每次都會建立乙個新的activity,除非它 棧 的頂部已經有個一樣的...