小談Activity啟動模式

Android的啟動模式有四種,分別為:standard、singleTop、singleTask、singleInstance;這些都可以在AndroidManifest.xml文件中對應(yīng)的標(biāo)簽設(shè)置android:launchMode,也可以在class文件中動態(tài)的設(shè)置(singleInstance除外)。

開發(fā)者可以根據(jù)實際需求為Activity設(shè)置對應(yīng)的啟動模式,以避免創(chuàng)建大量重復(fù)的Activity實例等問題。

下面介紹下各種啟動模式的含義:

1.standard:標(biāo)準(zhǔn)模式,它也是系統(tǒng)的默認(rèn)模式。此模式下的Activity每次啟動都會創(chuàng)建一個新的Activity實例,不管這個Activity是否已經(jīng)存在實例,被創(chuàng)建的Activity實例的生命周期為:onCreate->onStart->onResume。有一點有趣的地方,如果你用ApplicationContext 區(qū)啟動standard模式的Activity的時候會報錯,后來查了一些資料才知道:因為非Activity類型的Context并沒有所謂的任務(wù)棧,而standard模式的Activity會默認(rèn)進入啟動它的Activity所屬的任務(wù)棧中。

2.singleTop:在此模式下的Activity如果處于棧頂,且此時啟動該Activity,并不會創(chuàng)建新的實例,onNewIntent方法會被調(diào)用。如果啟動該Activity時,此Activity沒有處于棧頂,此時則會為該Activity創(chuàng)建新的實例。

3.singleTask:設(shè)置這個模式的Activity在所屬的任務(wù)棧中只會存在一個實例,若啟動該Activity時已經(jīng)存在Activity的實例,且不管當(dāng)前實例處于棧的任何位置,都會把任務(wù)棧中處于該Activity實例對象上面的Activity實例清除掉,使其本身處于棧頂,此時的Activity會調(diào)用onNewIntent方法。

4.singleInstance:俗話說一山不容二虎,用來形容這個模式再恰當(dāng)不過來,設(shè)置為這種模式的Activity只會單獨的存在于一個任務(wù)棧中,無論怎么操作,它都不會再創(chuàng)建新的實例(除非這個任務(wù)棧被系統(tǒng)銷毀了)


第一次寫文章內(nèi)心還是很忐忑的,有什么寫的不對的請各位大牛多多指點,謝謝!?。?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容