Activity 啟動模式詳解(一)

我們知道,在Android中喇完,launchMode在多個Activity跳轉(zhuǎn)的過程中扮演著重要的角色枚抵,它可以決定是否生成新的Activity實例柜候,是否重用已存在的Activity實例,是否和其他Activity實例公用一個task里灰羽。這里順帶簡單介紹一下task的概念驮履,task也叫活動棧,數(shù)據(jù)結(jié)構(gòu)是棧廉嚼,它用來管理Activity玫镐,一個task可以管理多個Activity,啟動一個應用怠噪,也就創(chuàng)建一個與之對應的task恐似。

Activity中共有四種啟動模式:

*1.standard

*2.singleTop

*3.singleTask

*4.singleInstance

上述四中啟動模式可以在AndroidManifest.xml中通過的android:launchMode屬性進行配置

1.standard

該啟動模式是系統(tǒng)默認的啟動模式,如果你新建一個Activity并且不設置它的啟動模式(模式為standard)傍念,那么當其他Activity啟動這個Activity的時候就會重新創(chuàng)建一個實例矫夷,不管之前的task中是否有這個Activity的實例。

比如:A憋槐、B双藕、C三個Activity的啟動順序為A->B->C,三者的啟動模式均為standard阳仔,那么忧陪,在C中啟動C的時候,近范,tsak中會重新生成一個新的A的實例嘶摊,task中的順序?qū)⒆優(yōu)锳->B->C1->C2。(C1顺又,C2表示同一Activity的不同實例)

2.singleTop

該啟動模式與standard不同之處在于更卒,如果被啟動的Activity的啟動模式被設置為singleTop的話,如果在task中有該Activity的實例并且該Activity處于棧頂?shù)脑捴烧眨敲聪到y(tǒng)不會重新創(chuàng)建新的Activity蹂空,而是會復用之前的Activity實例俯萌,同時回調(diào)Activity中的onNewIntent()方法,否則的話系統(tǒng)還是會和與standard一樣創(chuàng)建新的實例上枕。比如:A->B->C咐熙,C啟動模式為singleTop,在C中啟動C辨萍,由于C在棧頂棋恼,task中依舊為A->B->C,如果設置A啟動模式為singleTop锈玉,那么在C中啟動A爪飘,A不在棧頂,則系統(tǒng)會重新創(chuàng)建實例拉背,task中會變?yōu)锳1->B->C->A2师崎。

3.singleTak

singleTask模式和后面的singleInstance模式都是只創(chuàng)建一個實例的。

該啟動模式是singleTop的加強版椅棺,如果發(fā)現(xiàn)所在Activity棧中有對應的Activity實例犁罩,則使此Activity實例之上的其他Activity實例統(tǒng)統(tǒng)出棧,使此Activity實例成為棧頂對象两疚,顯示到幕前床估。比如:A->B->C,C啟動模式為singleTop诱渤,在C中啟動C丐巫,由于C在棧頂,task中依舊為A->B->C源哩,如果設置A啟動模式為singleTop鞋吉,那么在C中啟動B,B不在棧頂励烦,則系統(tǒng)清除B上面的所有實例谓着,讓其置于棧頂,task中會變?yōu)锳->B坛掠。

4.singleInstance

這種啟動模式比較特殊赊锚,因為它會啟用一個新的棧結(jié)構(gòu),將Acitvity放置于這個新的棧結(jié)構(gòu)中屉栓,并保證不再有其他Activity實例進入舷蒲。

簡單點理解,singleInstance所標識的Activity友多,當被啟動時牲平,系統(tǒng)會首先判斷系統(tǒng)其他棧中是否已經(jīng)存在此Activity實例,有則直接使用域滥,并且其所在的Activity棧理論上只有它一個Activity元素纵柿。

關于Activity的taskAffinity和Intent的幾種常見的FLAG是以及task相關屬性會在下一篇文中詳細介紹

參考鏈接:Android之四種加載方式(http://blog.csdn.net/tiancizhenai/article/details/7037787).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜈抓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昂儒,更是在濱河造成了極大的恐慌沟使,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渊跋,死亡現(xiàn)場離奇詭異腊嗡,居然都是意外死亡,警方通過查閱死者的電腦和手機拾酝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門燕少,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒿囤,你說我怎么就攤上這事棺亭。” “怎么了蟋软?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗽桩。 經(jīng)常有香客問我岳守,道長,這世上最難降的妖魔是什么碌冶? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任湿痢,我火速辦了婚禮,結(jié)果婚禮上扑庞,老公的妹妹穿的比我還像新娘譬重。我一直安慰自己,他們只是感情好罐氨,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布臀规。 她就那樣靜靜地躺著,像睡著了一般栅隐。 火紅的嫁衣襯著肌膚如雪塔嬉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天租悄,我揣著相機與錄音谨究,去河邊找鬼。 笑死泣棋,一個胖子當著我的面吹牛胶哲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播潭辈,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼鸯屿,長吁一口氣:“原來是場噩夢啊……” “哼澈吨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起碾盟,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤棚辽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冰肴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屈藐,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年熙尉,在試婚紗的時候發(fā)現(xiàn)自己被綠了联逻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡检痰,死狀恐怖包归,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铅歼,我是刑警寧澤公壤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站椎椰,受9級特大地震影響厦幅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜慨飘,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一确憨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瓤的,春花似錦休弃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至本辐,卻和暖如春桥帆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背慎皱。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工老虫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茫多。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓祈匙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子夺欲,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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