Activity生命周期詳解

共有七個(gè)周期函數(shù):onCreate()局蚀、onStart()彻桃、onResume()急但、onPause()澎媒、onStop()、onRestart()波桩、onDestroy().

Activity生命周期.jpg

七個(gè)周期函數(shù)解析

  • onCreate(): 創(chuàng)建Activity時(shí)調(diào)用戒努,設(shè)置在該方法中,還以Bundle的形式提供對(duì)以前存儲(chǔ)的任何狀態(tài)的訪問(wèn)镐躲。
  • onStart(): Activity變?yōu)樵谄聊簧蠈?duì)用戶(hù)可見(jiàn)時(shí)調(diào)用储玫。
  • onResume(): Activity開(kāi)始與用戶(hù)交互時(shí)調(diào)用(無(wú)論是啟動(dòng)還是重新啟動(dòng)一個(gè)活動(dòng),該方法總是被調(diào)用萤皂。
  • onPause(): Activity被暫腿銮睿或收回cpu和其他資源時(shí)調(diào)用,該方法用戶(hù)保護(hù)活動(dòng)狀態(tài)的敌蚜,也是保護(hù)現(xiàn)場(chǎng)桥滨。
  • onStop(): Activity被停止并轉(zhuǎn)為不可見(jiàn)階段及后續(xù)的生命周期事件時(shí)調(diào)用。
  • onRestart(): Activity被重新啟動(dòng)時(shí)調(diào)用弛车。該活動(dòng)仍然在棧中齐媒,而不是啟動(dòng)新的Activity。
  • onDestroy():當(dāng)前Activity結(jié)束或正在被系統(tǒng)銷(xiāo)毀纷跛、資源空間等就被回收喻括。

不同場(chǎng)景下Activity生命周期的變化過(guò)程

  • 啟動(dòng)Activity: onCreate()—>onStart()—>onResume(),Activity進(jìn)入運(yùn)行狀態(tài)贫奠。
  • Activity退居后臺(tái): 當(dāng)前Activity轉(zhuǎn)到新的Activity界面或按Home鍵回到主屏: onPause()—>onStop()唬血,進(jìn)入停滯狀態(tài)望蜡。
  • Activity返回前臺(tái): onRestart()—>onStart()—>onResume(),再次回到運(yùn)行狀態(tài)拷恨。
  • Activity退居后臺(tái)脖律,且系統(tǒng)內(nèi)存不足, 系統(tǒng)會(huì)殺死這個(gè)后臺(tái)狀態(tài)的Activity腕侄,若再次回到這個(gè)Activity,則會(huì)走onCreate()–>onStart()—>onResume()
  • 鎖定屏與解鎖屏幕只會(huì)調(diào)用onPause()小泉,而不會(huì)調(diào)用onStop方法,開(kāi)屏后則調(diào)用onResume()
  • 退出當(dāng)前Activity:onPause()->onStop()->onDestory()冕杠。
    彈出Toast和AlertDialog的時(shí)候Activity的生命周期不會(huì)有改變

橫豎屏切換對(duì)Activity生命周期的影響

onSaveInstanceState()和onRestoreInstanceState():
1.不是activity生命周期的方法微姊。
2.不會(huì)成對(duì)出現(xiàn)。

注意:android2.3和android4.0的生命周期不一樣分预,2.3是先onSaveInstanceState兢交,后onPause,4.0是先onPause笼痹,后onSaveInstanceState

  • 橫豎屏切換與android:configChanges屬性有關(guān)配喳,android:configChanges="orientation|screenSize|keyboardHidden",在2.3和4.0及以上Activity都不會(huì)重新創(chuàng)建与倡。
    android:configChanges屬性值有:
    1)orientation:消除橫豎屏的影響
    2)keyboardHidden:消除鍵盤(pán)的影響
    3)screenSize:消除屏幕大小的影響
    4)……
  • 禁止橫豎屏切換:
    android:screenOrientation="portrait" 只能豎屏顯示android:screenOrientation="landscape"只能橫屏顯示界逛。
    Java代碼:
    Activity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);以豎屏顯示Activity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);以橫屏顯示
  • Activity沒(méi)有重建時(shí),就會(huì)調(diào)用onConfigurationChanged函數(shù)
  • 沒(méi)有設(shè)置configChanges屬性
    onPause()->
    onSaveInstanceState()->
    onStop()->
    onDestory()->
    onCreate()->
    onStart()->
    onRestoreInstanceState()->
    onResume()

Activity生命周期的變化與數(shù)據(jù)保存和恢復(fù)

onSaveInstanceState()特點(diǎn):

  • 并不是永遠(yuǎn)都會(huì)被調(diào)用纺座,并不是每次銷(xiāo)毀時(shí)都會(huì)被調(diào)用

  • 在onStop()方法之前被調(diào)用息拜,但不保證會(huì)在onPause()方法之前還是之后被調(diào)用。

  • 以下行為不會(huì)被調(diào)用:
    1)執(zhí)行finish()方法净响;
    2)主動(dòng)按Back鍵少欺。

  • 以下行為會(huì)被調(diào)用:
    1)跳轉(zhuǎn)另一個(gè)Activity,且沒(méi)有用finish()函數(shù)馋贤;
    2)長(zhǎng)時(shí)間在后臺(tái)也沒(méi)有顯示出來(lái)赞别;
    3)內(nèi)存緊張被kill掉;
    4)用戶(hù)直接按home鍵配乓。

在沒(méi)有重寫(xiě)onSaveInstanceState()函數(shù)時(shí)仿滔,activity控件的狀態(tài)(如EditText輸入的文字)可能會(huì)默認(rèn)保存,前提條件是UI控件必須賦了id犹芹。

總結(jié):

  • 持久性的數(shù)據(jù):在onPause()崎页,onStop()以及onDestroy()中保存。
  • 非持久性的數(shù)據(jù):在onSaveInstanceState()保存腰埂。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末飒焦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子屿笼,更是在濱河造成了極大的恐慌牺荠,老刑警劉巖翁巍,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異休雌,居然都是意外死亡灶壶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)杈曲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)例朱,“玉大人,你說(shuō)我怎么就攤上這事鱼蝉。” “怎么了箫荡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵魁亦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我羔挡,道長(zhǎng)洁奈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任绞灼,我火速辦了婚禮利术,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘低矮。我一直安慰自己印叁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布军掂。 她就那樣靜靜地躺著轮蜕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝗锥。 梳的紋絲不亂的頭發(fā)上跃洛,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音终议,去河邊找鬼汇竭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛穴张,可吹牛的內(nèi)容都是我干的细燎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼陆馁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼找颓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起叮贩,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤击狮,失蹤者是張志新(化名)和其女友劉穎佛析,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體彪蓬,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寸莫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了档冬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膘茎。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖酷誓,靈堂內(nèi)的尸體忽然破棺而出披坏,到底是詐尸還是另有隱情,我是刑警寧澤盐数,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布棒拂,位于F島的核電站,受9級(jí)特大地震影響玫氢,放射性物質(zhì)發(fā)生泄漏帚屉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一漾峡、第九天 我趴在偏房一處隱蔽的房頂上張望攻旦。 院中可真熱鬧,春花似錦生逸、人聲如沸牢屋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伟阔。三九已至,卻和暖如春掰伸,著一層夾襖步出監(jiān)牢的瞬間皱炉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工狮鸭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留合搅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓歧蕉,卻偏偏與公主長(zhǎng)得像灾部,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惯退,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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