一,正常生命周期:
1,onCreate():表示Activity正在被創(chuàng)建;做一些初始化工作,比如加載界面布局資源,初始化Activity所需要的數(shù)據(jù);
2,onStart():表示Activity已經(jīng)可見;但是沒(méi)有到前臺(tái),還無(wú)法與用戶交互;
3,onResume():表示Activity已獲取焦點(diǎn);Activity已到前臺(tái),可以交互;
4,onPause():表示Activity失去焦點(diǎn);可以做一下儲(chǔ)存數(shù)據(jù),停止動(dòng)畫等工作,但不能太耗時(shí),會(huì)影響到新Activity的顯示,onPause()執(zhí)行完之后,新界面的onResume()才會(huì)執(zhí)行;
5,onStop():表示Activity不可見:可以做一些稍微重量級(jí)的回收工作,同樣不能太耗時(shí);
6,onDestory():表示Activity即將被銷毀:這是Activity生命周期的最后一個(gè)回調(diào),可以做一些回收工作和最終的資
源釋放;
7,onRestar():表示Activity正在重新啟動(dòng);一般是用戶行為所致,只Activity調(diào)用的onStop()之后,又重新可見;

8,從整體生命周期來(lái)說(shuō),onCreate()和onDestory()是配對(duì)的,
從Activity是否可見來(lái)說(shuō),onStart()和onStop()是配對(duì)的,
從Activity是否在前臺(tái)(即是否獲取焦點(diǎn))來(lái)說(shuō),onResume()和onPause()是配對(duì)的;
9,一個(gè)Activity打開一個(gè)新的Activity時(shí),其生命周期方法的回調(diào)順序

由此可見,舊Activity會(huì)先執(zhí)行onPause(),新的Activity才會(huì)創(chuàng)建,知道新的Activity執(zhí)行onResume(),舊的Activity才會(huì)執(zhí)行onStop();所以我們應(yīng)該盡量在onStop()中執(zhí)行耗時(shí)操作,從而使得新Activity盡快顯示出來(lái),并切換到前臺(tái);
二,異常生命周期:
1,資源相關(guān)的系統(tǒng)配置發(fā)生改變導(dǎo)致的Activity被殺死并重新創(chuàng)建
比如屏幕旋轉(zhuǎn)造成的生命周期重啟,Activity會(huì)調(diào)用onSaveInstanceState()來(lái)保存數(shù)據(jù),在onCreate()和onRestoreInstanceState()來(lái)恢復(fù)數(shù)據(jù),區(qū)別是,在onRestoreInstanceState()方法只有bundle對(duì)象不為空時(shí)才會(huì)調(diào)用;
2,資源內(nèi)存不足導(dǎo)致低優(yōu)先級(jí)的Activity被殺死
<1>前臺(tái)Activity:正在和用戶進(jìn)行交互的Activity,優(yōu)先級(jí)最高;
<2>可見但非前臺(tái)Activity:執(zhí)行了onPause(),比如從Activity中彈出對(duì)話框,導(dǎo)致Activity可見但已失去焦點(diǎn);
<3>后臺(tái)Activity:已經(jīng)執(zhí)行了onStop(),比如退入了后臺(tái),優(yōu)先級(jí)最低;
當(dāng)系統(tǒng)內(nèi)存不足時(shí),系統(tǒng)會(huì)按照上述優(yōu)先級(jí)去殺死目標(biāo)Activity所在的進(jìn)程
如果不想當(dāng)配置發(fā)生變化時(shí),重新創(chuàng)建Activity,需要在AndroidManifest中相應(yīng)的Activity標(biāo)簽中添加一行代碼:
android:configChanges="orientation|screenSize|keyboardHidden"
