Android四種啟動(dòng)模式

Android四種啟動(dòng)模式:standard、singleTop、singleTask、singleInstance 。

standard:默認(rèn)模式,在這個(gè)模式下,每次都會(huì)創(chuàng)建新的Activity實(shí)例,可以有多個(gè)實(shí)例,允許多個(gè)相同實(shí)例疊加。

singleTop:可以有多個(gè)相同Activity實(shí)例,但不允許多個(gè)相同Activity疊加。即,如果activity位于棧頂,啟動(dòng)相同的Activity,不會(huì)創(chuàng)建新的實(shí)例,而會(huì)調(diào)用其onNewIntent方法。

singleTask:相同的Activity只允許有一個(gè)。在這個(gè)模式下,如果棧中存在這個(gè)Activity的實(shí)例就會(huì)復(fù)用這個(gè)Activity,不管它是否位于棧頂,復(fù)用時(shí),會(huì)將它上面的Activity全部出棧,并且會(huì)回調(diào)該實(shí)例的onNewIntent方法。其實(shí)這個(gè)過程還存在一個(gè)任務(wù)棧的匹配,因?yàn)檫@個(gè)模式啟動(dòng)時(shí),會(huì)在自己需要的任務(wù)棧中尋找實(shí)例,這個(gè)任務(wù)棧就是通過taskAffinity屬性指定。如果這個(gè)任務(wù)棧不存在,則會(huì)創(chuàng)建這個(gè)任務(wù)棧。

singleInstance:該模式具備singleTask模式的所有特性外,與它的區(qū)別就是,這種模式下的Activity會(huì)單獨(dú)占用一個(gè)Task棧,具有全局唯一性,即整個(gè)系統(tǒng)中就這么一個(gè)實(shí)例,由于棧內(nèi)復(fù)用的特性,后續(xù)的請(qǐng)求均不會(huì)創(chuàng)建新的Activity實(shí)例,除非這個(gè)特殊的任務(wù)棧被銷毀了。以singleInstance模式啟動(dòng)的Activity在整個(gè)系統(tǒng)中是單例的,如果在啟動(dòng)這樣的Activiyt時(shí),已經(jīng)存在了一個(gè)實(shí)例,那么會(huì)把它所在的任務(wù)調(diào)度到前臺(tái),重用這個(gè)實(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 一、概述 Activity 作為與用戶交互的一個(gè)窗口,是使用非常頻繁的一個(gè)基本組件。Android系統(tǒng)是通過Act...
    三也視界閱讀 2,408評(píng)論 3 11
  • 說到啟動(dòng)模式,先介紹下android的任務(wù)棧,任務(wù)棧是一種后進(jìn)先出的結(jié)構(gòu)。位于棧頂?shù)腁ctivity處于焦點(diǎn)狀態(tài),...
    將行陌路閱讀 674評(píng)論 0 3
  • 我們首先了解下Activity的四種啟動(dòng)模式分別是: standard 標(biāo)準(zhǔn)模式:在不指定啟動(dòng)模式的前提下,系統(tǒng)默...
    MIRROR1217閱讀 1,471評(píng)論 0 1
  • 在默認(rèn)情況下,當(dāng)我們多次啟動(dòng)同一個(gè)Activity的時(shí)候,系統(tǒng)會(huì)創(chuàng)建多個(gè)實(shí)例并把它們放入任務(wù)棧中,當(dāng)我們單擊bac...
    __帝華閱讀 397評(píng)論 0 0
  • 【艾上穴】截根穴 分享一個(gè)穴,大家經(jīng)常按一下,很痛或里有結(jié)節(jié)的人,就要常灸一下了。防癌[呲牙] 截根穴經(jīng)外奇穴,又...
    愛滿天下閱讀 2,609評(píng)論 1 1

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