Activity的啟動模式

2021-07-11 03:44:12 字數 1579 閱讀 2332

對於activity的四種啟動模式大家應該都很熟悉~~面試中也經常會被問過的問題。

1、standard(標準模式)

2、singletop(棧頂復用模式)

3、singletask(棧內復用模式)

4、singleinstance(單例項模式)

設定activity的啟動模式,只需要在androidmanifest.xml裡對應的標籤設定

android:launchmode屬性:

android:name="com.activity.mainactivity"

android:launchmode="standard"/>

一般我們不設定的時候就是預設的standard模式。大多數用得最多的也是此種模式。但是合理的利用

activity的啟動模式,可以提高我們的開發效率。

1、standard(標準模式)

我們的程式採用的最多的就是這種模式,預設什麼都不寫的情況下就是這種模式。在這種模式下每次都會

new乙個新的例項。如activity1中開啟activity1,會再new乙個activity1,按返回鍵乙個個退出。

2、singletop(棧頂復用模式)

每個處於棧頂的activity可以啟用自己。非棧頂的不行。

若我有兩個activity名為b1,b2,兩個activity內容功能完全相同,都有兩個按鈕可以跳到b1或者b2,

唯一不同的是b1為standard,b2為singletop。

若我意圖開啟的順序為b1->b2->b2,則實際開啟的順序為b1->b2(後一次意圖開啟b2,

實際只呼叫了前乙個的onnewintent方法)

若我意圖開啟的順序為b1->b2->b1->b2,則實際開啟的順序與意圖的一致,為b1->b2->b1->b2。

3、singletask(棧內復用模式)

如果要啟用的那個activity是singletask的模式並且是在任務棧中存在例項,則不會建立新的例項,

現在只需要把activity上面的例項清除掉,也就是clear pop。

比如有棧內有abcd四個activity,a位於棧頂,d位於棧頂,c為singletask模式。現在在a中啟動c,

那麼現在棧中的順序應該是cd。

這種模式也闊以應用於退出程式。。。

將主activity設為singtask模式,然後在要退出的activity中轉到主activity,然後重寫主activity的

onnewintent函式,並在函式中加上一句finish。

4、singleinstance(單例項模式)

這是一種加強的singletask模式,除了具有singletask的特性外,還有一點,就是具有這種模式的activity

只能單獨存在於乙個任務棧中。

比如現在有abc三個activity,b是singletask模式,現在在a的taskid為100,那麼啟動b,會開闢乙個新的

task,taskid為101,(但是由於棧內復用的特性,101棧內不會再建立新的activity,除非這個獨特的任務

棧被系統摧毀了)再啟動c的話就位於taskid為100的棧內了。

activity 啟動模式

在android的中activity 有4種啟動方式 standard singletop singletask singleinstance 下面就分輕重點講講這些啟動方式。1 standard啟動方式 這種方式也是系統預設的。說的簡單點,我們在使用startactivity 方法的時候,系統就會...

activity啟動模式

1 對於使用standard 模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的乙個新的例項。例如a啟動a,a再接著啟動a,a繼續啟動a,然後再分別出棧,如圖所示 2 當活動的啟動模式指定為 singletop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直...

Activity啟動模式

兩種方式可以定義activity啟動模式 manifest intent intent定義的啟動模式優先於manifest 不管activity執行在乙個新的任務還是與啟動它的activity同樣的任務,返回鍵總是把使用者帶到之前的activity。然而,如果啟動乙個singletask的activ...