Activity啟動模式以及taskAffinity屬性詳解

Activity有四種啟動模式:Standard、SingleTop猎醇、SingleTask账阻、SingleInstance.

Standard - 標(biāo)準(zhǔn)模式

默認(rèn)的系統(tǒng)模式符相。每次啟動一個Activity都會重新創(chuàng)建一個新的實例熔任。這種模式下褒链,誰啟動了該模式的Activity,這個Activity就存在于啟動他的Activity的任務(wù)棧中疑苔。

SingleTop - 棧頂復(fù)用模式

  1. 如果要開啟的Activity在任務(wù)棧的頂部已經(jīng)存在甫匹,就不會創(chuàng)建新的實例,而是調(diào)用Activity的onNewIntent()方法惦费。避免棧頂?shù)腁ctivity被重復(fù)創(chuàng)建兵迅。

  2. 如果棧頂或棧中不存在該Activity的實例,則情況同Standard模式薪贫。

SingleTask - 棧內(nèi)復(fù)用模式

Activity只會在任務(wù)棧里面存在一個實例恍箭。如果要激活的Activity,在任務(wù)棧里面已經(jīng)存在瞧省,就不會創(chuàng)建新的Activity扯夭,而是復(fù)用這個已經(jīng)存在的Activity,調(diào)用 onNewIntent() 方法臀突,并且清空這個Activity任務(wù)棧上面所有的Activity勉抓。

這個過程還存在一個任務(wù)棧的匹配,因為這個模式啟動時候学,會在自己需要的任務(wù)棧中尋找實例,這個任務(wù)棧就是通過taskAffinity屬性指定纵散。如果這個任務(wù)棧不存在梳码,則會創(chuàng)建這個任務(wù)棧隐圾。

注:盡管 Activity 在新任務(wù)中啟動,但是用戶按“返回”按鈕仍會返回到前一個 Activity掰茶。

SingleInstance - 全局唯一

該模式具備singleTask模式的所有特性外暇藏,與它的區(qū)別就是,這種模式下的Activity會單獨占用一個Task棧濒蒋,具有全局唯一性盐碱,即整個系統(tǒng)中就這么一個實例,由于棧內(nèi)復(fù)用的特性沪伙,后續(xù)的請求均不會創(chuàng)建新的Activity實例瓮顽,除非這個特殊的任務(wù)棧被銷毀了。以singleInstance模式啟動的Activity在整個系統(tǒng)中是單例的围橡,如果在啟動這樣的Activiyt時暖混,已經(jīng)存在了一個實例,那么會把它所在的任務(wù)調(diào)度到前臺翁授,重用這個實例拣播。

taskAffinity

先介紹一下taskAffinity的屬性。

與 Activity 有著親和關(guān)系的任務(wù)收擦。從概念上講贮配,具有相同親和關(guān)系的 Activity 歸屬同一任務(wù)(從用戶的角度來看,則是歸屬同一“應(yīng)用”)塞赂。 任務(wù)的親和關(guān)系由其根 Activity 的親和關(guān)系確定泪勒。

親和關(guān)系確定兩件事 - Activity 更改到的父項任務(wù)(allowTaskReparenting 屬性)和通過 FLAG_ACTIVITY_NEW_TASK 標(biāo)志啟動 Activity 時將用來容納它的任務(wù)。

每個Activity都有taskAffinity屬性减途,這個屬性指出了它希望進(jìn)入的Task酣藻。如果一個Activity沒有顯式的指明該 Activity的taskAffinity,那么它的這個屬性就等于Application指明的taskAffinity鳍置,如果 Application也沒有指明辽剧,那么該taskAffinity的值就等于包名。而Task也有自己的affinity屬性税产,它的值等于它的根 Activity的taskAffinity的值怕轿。

注意:前方有坑!

  1. Standard模式和SingleTop模式都是在原任務(wù)棧中新建Activity實例辟拷,不會創(chuàng)建新的Task撞羽,即使你指定了taskAffinity屬性。

  2. 在singleTop模式下我們需要同時在onCreate() 和 onNewIntent()中處理發(fā)來的intent衫冻,以滿足不同情況诀紊。

  3. 使用SingleTask或者FLAG_ACTIVITY_NEW_TASK啟動activity的時候,如果沒有指定taskAffinity隅俘,系統(tǒng)并不會新建一個Task邻奠,而是在當(dāng)前棧的棧頂(通過dumpsys activity activities 命令可以看到)笤喳。只有指定了不同的taskAffinity,才會新建Task碌宴。

  4. 使用SingleInstance杀狡,如果沒有指定taskAffinity,系統(tǒng)仍然會新建一個Task(通過dumpsys activity activities 命令可以看到)贰镣,但是呜象,從設(shè)備的最近任務(wù)列表中,卻只能看到一個任務(wù)碑隆,而只有指定了taskAffinity恭陡,才能看到兩個不同的任務(wù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末干跛,一起剝皮案震驚了整個濱河市子姜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌楼入,老刑警劉巖哥捕,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘉熊,居然都是意外死亡遥赚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門阐肤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凫佛,“玉大人,你說我怎么就攤上這事孕惜±⒀Γ” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵衫画,是天一觀的道長毫炉。 經(jīng)常有香客問我,道長削罩,這世上最難降的妖魔是什么瞄勾? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮弥激,結(jié)果婚禮上进陡,老公的妹妹穿的比我還像新娘。我一直安慰自己微服,他們只是感情好趾疚,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般盗蟆。 火紅的嫁衣襯著肌膚如雪戈二。 梳的紋絲不亂的頭發(fā)上舒裤,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天喳资,我揣著相機(jī)與錄音,去河邊找鬼腾供。 笑死仆邓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伴鳖。 我是一名探鬼主播节值,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼榜聂!你這毒婦竟也來了搞疗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤须肆,失蹤者是張志新(化名)和其女友劉穎匿乃,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豌汇,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡幢炸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拒贱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宛徊。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逻澳,靈堂內(nèi)的尸體忽然破棺而出闸天,到底是詐尸還是另有隱情,我是刑警寧澤斜做,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布苞氮,位于F島的核電站,受9級特大地震影響陨享,放射性物質(zhì)發(fā)生泄漏葱淳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一抛姑、第九天 我趴在偏房一處隱蔽的房頂上張望赞厕。 院中可真熱鬧,春花似錦定硝、人聲如沸皿桑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诲侮。三九已至镀虐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沟绪,已是汗流浹背刮便。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留绽慈,地道東北人恨旱。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像坝疼,于是被迫代替她去往敵國和親搜贤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容