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>