對於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...