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,除非它 棧 的頂部已經有個一樣的...