Activity生命周期

普通的Activity跳轉(zhuǎn)生命周期變化

  • MainActivity 啟動(dòng)

      D/LUtil: MainActivity onCreate()
      D/LUtil: MainActivity onStart()
      D/LUtil: MainActivity onResume()
    
  • 跳轉(zhuǎn)到 SecondActivity

      D/LUtil: MainActivity onPause()
      D/LUtil: SecondActivity onCreate()
      D/LUtil: SecondActivity onStart()
      D/LUtil: SecondActivity onResume()
      D/LUtil: MainActivity onStop()
    
  • SecondActivity 返回

      D/LUtil: SecondActivity onPause()
      D/LUtil: MainActivity onStart()
      D/LUtil: MainActivity onResume()
      D/LUtil: SecondActivity onStop()
      D/LUtil: SecondActivity onDestroy()
    
  • MainActivity 返回

      D/LUtil: MainActivity onPause()
      D/LUtil: MainActivity onStop()
      D/LUtil: MainActivity onDestroy()
    

finish() 函數(shù)在不同生命周期方法中的調(diào)用

  • onCreate() 中調(diào)用

      D/LUtil: MainActivity onCreate()
      D/LUtil: MainActivity onDestroy()
    
  • onStart() 中調(diào)用

      D/LUtil: MainActivity onCreate()
      D/LUtil: MainActivity onStart()
      D/LUtil: MainActivity onStop()
      D/LUtil: MainActivity onDestroy()
    
  • onResume() 中調(diào)用

      D/LUtil: MainActivity onCreate()
      D/LUtil: MainActivity onStart()
      D/LUtil: MainActivity onResume()
      D/LUtil: MainActivity onPause()
      D/LUtil: MainActivity onStop()
      D/LUtil: MainActivity onDestroy()
    

Activity 跳轉(zhuǎn)時(shí) finish() 函數(shù)調(diào)用

  • onPause() 中調(diào)用

      // MainActivity啟動(dòng)
      D/LUtil: MainActivity onCreate()
      D/LUtil: MainActivity onStart()
      D/LUtil: MainActivity onResume()
      // 點(diǎn)擊跳轉(zhuǎn)Button
      D/LUtil: MainActivity onPause()
      D/LUtil: SecondActivity onCreate()
      D/LUtil: SecondActivity onStart()
      D/LUtil: SecondActivity onResume()
      D/LUtil: MainActivity onStop()
      D/LUtil: MainActivity onDestroy()
      // 按返回鍵
      D/LUtil: SecondActivity onPause()
      D/LUtil: SecondActivity onStop()
      D/LUtil: SecondActivity onDestroy()
    
  • onStop() 中調(diào)用

      D/LUtil: MainActivity onCreate()
      D/LUtil: MainActivity onStart()
      D/LUtil: MainActivity onResume()
      // 點(diǎn)擊跳轉(zhuǎn)Button
      D/LUtil: MainActivity onPause()
      D/LUtil: SecondActivity onCreate()
      D/LUtil: SecondActivity onStart()
      D/LUtil: SecondActivity onResume()
      D/LUtil: MainActivity onStop()
      // 按返回鍵
      D/LUtil: SecondActivity onPause()
      D/LUtil: SecondActivity onStop()
      D/LUtil: SecondActivity onDestroy()
      D/LUtil: MainActivity onDestroy()
    

Activity 生命周期

Activity 生命周期
  • onCreate()

    首次創(chuàng)建 Activity 時(shí)調(diào)用姑食。 您應(yīng)該在此方法中執(zhí)行所有正常的靜態(tài)設(shè)置 — 創(chuàng)建視圖夏醉、將數(shù)據(jù)綁定到列表等等。 系統(tǒng)向此方法傳遞一個(gè) Bundle 對(duì)象住练,其中包含 Activity 的上一狀態(tài)(保存的狀態(tài)),不過(guò)前提是保存了該狀態(tài)。始終后接 onStart()。

  • onRestart()

    在 Activity 已停止并即將再次啟動(dòng)前調(diào)用拢驾。始終后接 onStart()

  • onStart()

    在 Activity 即將對(duì)用戶可見(jiàn)之前調(diào)用。(可見(jiàn)而用戶沒(méi)有焦點(diǎn)
    如果 Activity 轉(zhuǎn)入前臺(tái)世澜,則后接 onResume()独旷,如果 Activity 轉(zhuǎn)入隱藏狀態(tài),則后接 onStop()。

  • onResume()

    在 Activity 即將開(kāi)始與用戶進(jìn)行交互之前調(diào)用嵌洼。 此時(shí)案疲,Activity 處于 Activity 堆棧的頂層,并具有用戶輸入焦點(diǎn)麻养。
    始終后接 onPause()褐啡。

  • onPause()

    當(dāng)系統(tǒng)即將開(kāi)始繼續(xù)另一個(gè) Activity 時(shí)調(diào)用。 此方法通常用于確認(rèn)對(duì)持久性數(shù)據(jù)的未保存更改鳖昌、停止動(dòng)畫(huà)以及其他可能消耗 CPU 的內(nèi)容备畦,諸如此類。 它應(yīng)該非常迅速地執(zhí)行所需操作许昨,因?yàn)樗祷睾蠖危乱粋€(gè) Activity 才能繼續(xù)執(zhí)行。
    如果 Activity 返回前臺(tái)糕档,則后接 onResume()莉恼,如果 Activity 轉(zhuǎn)入對(duì)用戶不可見(jiàn)狀態(tài),則后接 onStop()速那。

  • onStop()

    在 Activity 對(duì)用戶不再可見(jiàn)時(shí)調(diào)用俐银。如果 Activity 被銷毀,或另一個(gè) Activity(一個(gè)現(xiàn)有 Activity 或新 Activity)繼續(xù)執(zhí)行并將其覆蓋端仰,就可能發(fā)生這種情況捶惜。
    如果 Activity 恢復(fù)與用戶的交互,則后接 onRestart()荔烧,如果 Activity 被銷毀吱七,則后接 onDestroy()。

  • onDestroy()

    在 Activity 被銷毀前調(diào)用茴晋。這是 Activity 將收到的最后調(diào)用陪捷。 當(dāng) Activity 結(jié)束(有人對(duì) Activity 調(diào)用了 finish()),或系統(tǒng)為節(jié)省空間而暫時(shí)銷毀該 Activity 實(shí)例時(shí)诺擅,可能會(huì)調(diào)用它。 您可以通過(guò) isFinishing() 方法區(qū)分這兩種情形啡直。

這些方法共同定義 Activity 的整個(gè)生命周期烁涌。您可以通過(guò)實(shí)現(xiàn)這些方法監(jiān)控 Activity 生命周期中的三個(gè)嵌套循環(huán):

  • Activity 的整個(gè)生命周期發(fā)生在 onCreate() 調(diào)用與 onDestroy() 調(diào)用之間。您的 Activity 應(yīng)在 onCreate() 中執(zhí)行“全局”狀態(tài)設(shè)置(例如定義布局)酒觅,并釋放 onDestroy() 中的所有其余資源撮执。例如,如果您的 Activity 有一個(gè)在后臺(tái)運(yùn)行的線程舷丹,用于從網(wǎng)絡(luò)上下載數(shù)據(jù)抒钱,它可能會(huì)在 onCreate() 中創(chuàng)建該線程,然后在 onDestroy() 中停止該線程。

  • Activity 的可見(jiàn)生命周期發(fā)生在 onStart() 調(diào)用與 onStop() 調(diào)用之間谋币。在這段時(shí)間仗扬,用戶可以在屏幕上看到 Activity 并與其交互。 例如蕾额,當(dāng)一個(gè)新 Activity 啟動(dòng)早芭,并且此 Activity 不再可見(jiàn)時(shí),系統(tǒng)會(huì)調(diào)用 onStop()诅蝶。您可以在調(diào)用這兩個(gè)方法之間保留向用戶顯示 Activity 所需的資源退个。 例如,您可以在 onStart() 中注冊(cè)一個(gè) BroadcastReceiver 以監(jiān)控影響 UI 的變化调炬,并在用戶無(wú)法再看到您顯示的內(nèi)容時(shí)在 onStop() 中將其取消注冊(cè)语盈。在 Activity 的整個(gè)生命周期,當(dāng) Activity 在對(duì)用戶可見(jiàn)和隱藏兩種狀態(tài)中交替變化時(shí)缰泡,系統(tǒng)可能會(huì)多次調(diào)用 onStart() 和 onStop()刀荒。

  • Activity 的前臺(tái)生命周期發(fā)生在 onResume() 調(diào)用與 onPause() 調(diào)用之間。在這段時(shí)間匀谣,Activity 位于屏幕上的所有其他 Activity 之前照棋,并具有用戶輸入焦點(diǎn)。 Activity 可頻繁轉(zhuǎn)入和轉(zhuǎn)出前臺(tái) — 例如武翎,當(dāng)設(shè)備轉(zhuǎn)入休眠狀態(tài)或出現(xiàn)對(duì)話框時(shí)烈炭,系統(tǒng)會(huì)調(diào)用 onPause()。 由于此狀態(tài)可能經(jīng)常發(fā)生轉(zhuǎn)變宝恶,因此這兩個(gè)方法中應(yīng)采用適度輕量級(jí)的代碼符隙,以避免因轉(zhuǎn)變速度慢而讓用戶等待。

管理 Activity 生命周期

通過(guò)實(shí)現(xiàn)回調(diào)方法管理 Activity 的生命周期對(duì)開(kāi)發(fā)強(qiáng)大而又靈活的應(yīng)用至關(guān)重要垫毙。 Activity 的生命周期會(huì)直接受到 Activity 與其他 Activity霹疫、其任務(wù)及返回棧的關(guān)聯(lián)性的影響。

Activity 基本上以三種狀態(tài)存在:

  • 運(yùn)行中

    此 Activity 位于屏幕前臺(tái)并具有用戶焦點(diǎn)综芥。

  • 暫停

    另一個(gè) Activity 位于屏幕前臺(tái)并具有用戶焦點(diǎn)丽蝎,但此 Activity 仍可見(jiàn)。也就是說(shuō)膀藐,另一個(gè) Activity 顯示在此 Activity 上方屠阻,并且該 Activity 部分透明或未覆蓋整個(gè)屏幕。 暫停的 Activity 處于完全活動(dòng)狀態(tài)(Activity 對(duì)象保留在內(nèi)存中额各,它保留了所有狀態(tài)和成員信息国觉,并與窗口管理器保持連接),但在內(nèi)存極度不足的情況下虾啦,可能會(huì)被系統(tǒng)終止麻诀。

  • 停止

    該 Activity 被另一個(gè) Activity 完全遮蓋(該 Activity 目前位于“后臺(tái)”)痕寓。 已停止的 Activity 同樣仍處于活動(dòng)狀態(tài)(Activity 對(duì)象保留在內(nèi)存中,它保留了所有狀態(tài)和成員信息蝇闭,但未與窗口管理器連接)呻率。 不過(guò),它對(duì)用戶不再可見(jiàn)丁眼,在他處需要內(nèi)存時(shí)可能會(huì)被系統(tǒng)終止筷凤。
    如果 Activity 處于暫停或停止?fàn)顟B(tài)苞七,系統(tǒng)可通過(guò)要求其結(jié)束(調(diào)用其 finish() 方法)或直接終止其進(jìn)程藐守,將其從內(nèi)存中刪除。(將其結(jié)束或終止后)再次打開(kāi) Activity 時(shí)蹂风,必須重建卢厂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市惠啄,隨后出現(xiàn)的幾起案子慎恒,更是在濱河造成了極大的恐慌,老刑警劉巖撵渡,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件融柬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡趋距,警方通過(guò)查閱死者的電腦和手機(jī)粒氧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)节腐,“玉大人外盯,你說(shuō)我怎么就攤上這事∫砣福” “怎么了饱苟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)狼渊。 經(jīng)常有香客問(wèn)我箱熬,道長(zhǎng),這世上最難降的妖魔是什么狈邑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任坦弟,我火速辦了婚禮,結(jié)果婚禮上官地,老公的妹妹穿的比我還像新娘。我一直安慰自己烙懦,他們只是感情好驱入,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般亏较。 火紅的嫁衣襯著肌膚如雪莺褒。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天雪情,我揣著相機(jī)與錄音遵岩,去河邊找鬼。 笑死巡通,一個(gè)胖子當(dāng)著我的面吹牛尘执,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宴凉,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼誊锭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了弥锄?” 一聲冷哼從身側(cè)響起丧靡,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎籽暇,沒(méi)想到半個(gè)月后温治,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戒悠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年熬荆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片救崔。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惶看,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出六孵,到底是詐尸還是另有隱情纬黎,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布劫窒,位于F島的核電站本今,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏主巍。R本人自食惡果不足惜冠息,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孕索。 院中可真熱鬧逛艰,春花似錦、人聲如沸搞旭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至镇眷,卻和暖如春咬最,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欠动。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工永乌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人具伍。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓翅雏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親沿猜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枚荣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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