Android 啟動(dòng)模式

1.standard:標(biāo)準(zhǔn)模式,也是默認(rèn)模式。每當(dāng)我們啟動(dòng)一個(gè)Activity,系統(tǒng)就會(huì)相應(yīng)的創(chuàng)建一個(gè)實(shí)例,不管這個(gè)實(shí)例是否已經(jīng)存在。

2.singleTop:棧頂復(fù)用模式,如果要啟動(dòng)的Activity處于棧的頂部,那么此時(shí)系統(tǒng)不會(huì)創(chuàng)建新的實(shí)例,而是直接打開(kāi)此頁(yè)面,同時(shí)它的onNewIntent()方法會(huì)被執(zhí)行,可以通過(guò)Intent進(jìn)行傳值,而且它的onCreate(),onStart()方法不會(huì)被調(diào)用,因?yàn)樗](méi)有發(fā)生任何變化。

3.singleTask:棧內(nèi)復(fù)用模式,如果棧中存在這個(gè)Activity的實(shí)例就會(huì)復(fù)用這個(gè)Activity,不管它是否位于棧頂,復(fù)用時(shí),會(huì)將它上面的Activity全部出棧,因?yàn)閟ingleTask本身自帶clearTop這種功能。并且會(huì)回調(diào)該實(shí)例的onNewIntent()方法。

4.singleInstance:?jiǎn)螌?shí)例模式,該模式具備singleTask模式的所有特性外,與它的區(qū)別就是,這種模式下的Activity會(huì)單獨(dú)占用一個(gè)Task棧,具有全局唯一性。以singleInstance模式啟動(dòng)的Activity在整個(gè)系統(tǒng)中是單例的,如果在啟動(dòng)這樣的Activiyt時(shí),已經(jīng)存在了一個(gè)實(shí)例,那么會(huì)把它所在的任務(wù)調(diào)度到前臺(tái),重用這個(gè)實(shí)例。

啟動(dòng)模式的特點(diǎn):

1.standard特點(diǎn):(1) Activity默認(rèn)的啟動(dòng)模式。(2) 新Activity在啟動(dòng)它的Activity所在的棧中。

2.singleTop特點(diǎn):若需新建的Activity位于任務(wù)棧棧頂,那么此Activity的實(shí)例就不會(huì)重建,而是重用棧頂?shù)膶?shí)例,否則就創(chuàng)建該Activity新的實(shí)例并置于棧頂。

3.singleTask特點(diǎn):(1)查看Activity想要的任務(wù)棧是否存在,若不存在則重建一個(gè)任務(wù)棧,創(chuàng)建該Activity實(shí)例并置于棧中。(2)若任務(wù)棧存在,則查看Activity是否存在棧中,若存在棧中,則將該Activity以上的所有Activity出棧,使該Activity處于棧頂。

4.singleInstance特點(diǎn):直接創(chuàng)建一個(gè)新的任務(wù)棧,并創(chuàng)建該Activity實(shí)例放于新的任務(wù)棧中

特例:
如果存在activityA,B(啟動(dòng)模式singleTask/singleInstance),C(stabdard)
調(diào)起過(guò)程為A-->B-->C-->B-->C...后面循環(huán)
A啟動(dòng)B時(shí)調(diào)用了finish,
或者A沒(méi)有調(diào)用finish,A和C設(shè)置了不同的taskAffinity,就是不在同一個(gè)棧
結(jié)果:C只創(chuàng)建一次實(shí)例

A沒(méi)有調(diào)用finish,而且和C在同一個(gè)棧
結(jié)果二:如果A沒(méi)有調(diào)用finish,則C每次啟動(dòng)都會(huì)創(chuàng)建新實(shí)例

總結(jié):ActivityA的啟動(dòng)模式為standard時(shí),如果ActivityA所在的棧只有ActivityA一個(gè)實(shí)例,那么其他棧的Activity調(diào)起ActivityA,ActivityA只會(huì)創(chuàng)建一次實(shí)例,就是只走一次onCreate,第二次調(diào)用會(huì)走onRestart,如果ActivityA所在棧存在其他Activity實(shí)例,則ActivityA每次啟動(dòng)都會(huì)創(chuàng)建新的實(shí)例

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

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

  • 經(jīng)?;煜?,轉(zhuǎn)載的以備今后查看(原鏈接:http://www.itdecent.cn/p/7f1c9fac2af2...
    lkuo閱讀 1,165評(píng)論 0 1
  • 任務(wù)和返回棧 應(yīng)用通常包含多個(gè) Activity ,每個(gè) Activity 均應(yīng)圍繞用戶可以執(zhí)行的特定操作設(shè)計(jì),并...
    望林_閱讀 23,538評(píng)論 2 23
  • 在這篇文章中,我會(huì)繼續(xù)跟大家分享有關(guān)于Android中啟動(dòng)模式的相關(guān)知識(shí)。當(dāng)然,如果對(duì)這個(gè)啟動(dòng)模式還不完全了解或者...
    fitchzheng閱讀 2,555評(píng)論 2 1
  • 1.Android 主要包含4種啟動(dòng)模式,下面分別介紹四種啟動(dòng)方式的特點(diǎn):1)tandard 默認(rèn)的啟動(dòng)模式,標(biāo)準(zhǔn)...
    SDY_0656閱讀 1,267評(píng)論 0 1
  • 任務(wù)和返回棧 任務(wù)是指在執(zhí)行特定作業(yè)時(shí)與用戶交互的一系列 Activity。 這些 Activity 按照各自的打...
    糖果小貓咪閱讀 379評(píng)論 0 0

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