Activity生命周期及啟動(dòng)模式

生命周期圖,切勿眼高手低


2H5V579BTWU(C$P(44YEG{I.png

任務(wù)棧:程序打開時(shí)就開啟了一個(gè)任務(wù)棧辈讶,用于記錄用戶開啟的activity命浴,先進(jìn)后出。只有位于任務(wù)棧棧頂?shù)腶ctivity才可以與用戶交互。
啟動(dòng)模式:
1生闲、standard:默認(rèn)值媳溺,標(biāo)準(zhǔn)模式;當(dāng)startActivity的時(shí)候就會創(chuàng)建實(shí)例碍讯,無論任務(wù)棧中是否已經(jīng)存在了該實(shí)例悬蔽。
2、singleTop:棧頂復(fù)用模式捉兴,啟動(dòng)activity時(shí)蝎困,如果該activity位于棧頂,就直接復(fù)用該實(shí)例倍啥,不會再創(chuàng)建實(shí)例(不會調(diào)用該activity的onCreate禾乘、onStart,而是調(diào)用onNewIntent虽缕、onResume)始藕;如果該activity不位于棧頂,還是會創(chuàng)建該activity的實(shí)例氮趋。
3伍派、singleTask:棧內(nèi)復(fù)用模式,啟動(dòng)activity時(shí)凭峡,首先會判斷是不是存在需要的棧拙已,如果不存在需要的任務(wù)棧,就會創(chuàng)建一個(gè)任務(wù)棧摧冀,并創(chuàng)建該activity的實(shí)例倍踪,壓入該棧中;如果存在需要的棧索昂,再判斷該棧中是否存在該activity的實(shí)例建车,如果存在,就會將該activity上面的activity出棧椒惨,調(diào)用該activity的onNewIntent缤至、onResume。如果該棧內(nèi)不存在該activity的實(shí)例康谆,就會創(chuàng)建該activity的實(shí)例领斥,并壓入棧中。判斷是否存在需要的任務(wù)棧沃暗,就需要用到TaskAffinity月洛,TaskAffinity就像是任務(wù)棧的身份證一樣。
4孽锥、singleInstance:單實(shí)例模式嚼黔,加強(qiáng)的singleTask模式细层。啟動(dòng)activity時(shí),會為該activity創(chuàng)建一個(gè)任務(wù)棧唬涧,之后再有別的頁面啟動(dòng)該activity時(shí)疫赎,也不會創(chuàng)建該activity的實(shí)例。

結(jié)合啟動(dòng)模式碎节,查看一下activity的生命周期:

1捧搞、ActivityA和ActivityB都是standard模式,在ActivityA上啟動(dòng)一個(gè)ActivityB:
![DP%7D5]]68PUIK72I]OJ5.png](http://upload-images.jianshu.io/upload_images/2578759-abeaf109394ed9b2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
按下home鍵钓株,將應(yīng)用置于后臺实牡,然后返回該應(yīng)用:
![%329])@~RWL(YTD%9)3EP7H.png](http://upload-images.jianshu.io/upload_images/2578759-6b2e385a4528f36d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2陌僵、ActivityA為singleTop模式轴合,在啟動(dòng)ActivityA后,再次啟動(dòng)ActivityA:

2VV3MYHDLMEZ@)8MFTJHWUR.png

按下返回鍵會直接退出ActivityA碗短。
3受葛、ActivityA為standard模式,ActivityB為singleTask模式偎谁,ActivityC不是singgleInstance模式总滩;在ActivityA中啟動(dòng)ActivityB,在ActivityB中啟動(dòng)ActivityC巡雨,在ActivityC中啟動(dòng)ActivityB:

![ZZPBDVC]$]WDN1Q4I)5C2W8.png](http://upload-images.jianshu.io/upload_images/2578759-fc879a7a07d04a27.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![]~CI8S{LN%K{3(W%W4]M%34.png](http://upload-images.jianshu.io/upload_images/2578759-93373eb305a382e4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
此時(shí)按返回鍵:

V51O)BP41$92R)X0X8{MDH0.png

4闰渔、橫豎屏切換時(shí)候Activity的生命周期。**
(1)铐望、不設(shè)置Activity的android:configChanges時(shí)冈涧,切屏?xí)匦抡{(diào)用各個(gè)生命周期,切橫屏?xí)r會執(zhí)行一次正蛙,切豎屏?xí)r會執(zhí)行兩次
(2)督弓、設(shè)置Activity的android:configChanges="orientation"時(shí),切屏還是會重新調(diào)用各個(gè)生命周期乒验,切橫愚隧、豎屏?xí)r只會執(zhí)行一次
(3)、設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時(shí)锻全,切屏不會重新調(diào)用各個(gè)生命周期狂塘,只會執(zhí)行onConfigurationChanged方法

順便記一下Activity的Flags:
比較常用的標(biāo)記位有:
1、用于設(shè)定Activity的啟動(dòng)模式:
FLAG_ACTIVITY_NEW_TASK:指定“singleTask”啟動(dòng)模式,效果和在Manifest指定一樣
FLAG_ACTIVITY_SINGLE_TOP:指定“singleTop”啟動(dòng)模式鳄厌。
2荞胡、用于影響Activity的運(yùn)行狀態(tài):
FLAG_ACTIVITY_CLEAR_TOP:具有此標(biāo)記的Activity,當(dāng)它啟動(dòng)時(shí)部翘,在同一個(gè)任務(wù)棧中所有位于它上面的Activity都要出棧硝训。如果該Activity的啟動(dòng)模式是singleTask,那么它上面的Activity會出棧,并執(zhí)行該Activity的onNewIntent窖梁、onResume赘风。如果該Activity是standard模式,那么該Activity和它上面的Activity都會出棧纵刘,系統(tǒng)會創(chuàng)建新的Activity實(shí)例并置于棧頂邀窃。
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS:具有這個(gè)標(biāo)記的Activity不會出現(xiàn)在歷史Activity的列表中;等同于在xml置頂屬性:android:excludeFromRecents="true"假哎。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瞬捕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舵抹,更是在濱河造成了極大的恐慌肪虎,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惧蛹,死亡現(xiàn)場離奇詭異扇救,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)香嗓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門迅腔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人靠娱,你說我怎么就攤上這事沧烈。” “怎么了像云?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵锌雀,是天一觀的道長。 經(jīng)常有香客問我苫费,道長汤锨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任百框,我火速辦了婚禮闲礼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铐维。我一直安慰自己柬泽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布嫁蛇。 她就那樣靜靜地躺著锨并,像睡著了一般。 火紅的嫁衣襯著肌膚如雪睬棚。 梳的紋絲不亂的頭發(fā)上第煮,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天解幼,我揣著相機(jī)與錄音,去河邊找鬼包警。 笑死撵摆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的害晦。 我是一名探鬼主播特铝,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼壹瘟!你這毒婦竟也來了鲫剿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤稻轨,失蹤者是張志新(化名)和其女友劉穎灵莲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澄者,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笆呆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粱挡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俄精,死狀恐怖询筏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竖慧,我是刑警寧澤嫌套,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站圾旨,受9級特大地震影響踱讨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砍的,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一痹筛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廓鞠,春花似錦帚稠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砌们,卻和暖如春杆麸,著一層夾襖步出監(jiān)牢的瞬間搁进,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工昔头, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拷获,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓减细,卻偏偏與公主長得像匆瓜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子未蝌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

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