Activity生命周期分為7個(gè)階段帅刀。
每個(gè)階段對(duì)應(yīng)的方法端圈,都是在階段名稱前加上on蜓斧。比如盲镶,Create階段對(duì)應(yīng)的方法是onCreate侥袜。
Create:創(chuàng)建階段
該階段界面不可見,所以不能在對(duì)應(yīng)方法 onCreate 中進(jìn)行界面處理方面的編程溉贿。比如枫吧,不能進(jìn)行動(dòng)畫顯示。在一個(gè) Activity 生命周期中宇色,該階段只有一次九杂,方法onCreate也只會(huì)執(zhí)行一次颁湖。在方法onCreate中,通常進(jìn)行初始化工作例隆,使用setContentView加載布局甥捺,對(duì)一些控件和變量進(jìn)行初始化等。除此之外的一些工作裳擎,都不宜在該方法中處理涎永。
Start:?jiǎn)?dòng)階段
該階段界面已經(jīng)構(gòu)造完成,但是尚未進(jìn)入前臺(tái)鹿响,所以仍然無(wú)法看到界面羡微,用戶無(wú)法和Activity進(jìn)行交互。在Create或Restart環(huán)節(jié)之后惶我,都有可能進(jìn)入到該環(huán)節(jié)妈倔。因?yàn)镽estart可能有多次,所以Start階段也有可能有多次绸贡。在方法onStart中盯蝴,可以做一些初始化工作,效果和在onCreate中做初始化工作的效果是一樣的听怕,只是官方推薦在onCreate中進(jìn)行初始化工作捧挺。在onCreate中能夠做的工作,也可以在onStart中做尿瞭,但是在onStart中做的工作不見得都適合在onCreate中做闽烙。比如,動(dòng)畫的初始化工作声搁。
Resume:繼續(xù)/重新開始階段
該階段Activity出現(xiàn)在前臺(tái)黑竞,允許和用戶進(jìn)行交互。在onResume方法中疏旨,可以進(jìn)行開啟動(dòng)畫很魂、打開獨(dú)占設(shè)備的操作。
Pause:暫停階段
該階段 Activity 是可見的檐涝。當(dāng)切換到其他 Activity 或退出 Activity時(shí)會(huì)進(jìn)入該階段遏匆。可以在 onPause 方法中執(zhí)行一些輕量級(jí)的處理操作谁榜,比如資源釋放拉岁、保存數(shù)據(jù)等。注意惰爬,一定是輕量級(jí)的工作,Android留給該階段的時(shí)間最長(zhǎng)是500ms惫企,超時(shí)不能完成處理就會(huì)被強(qiáng)制關(guān)閉撕瞧;如果時(shí)間過(guò)長(zhǎng)陵叽,即使不超時(shí)也會(huì)影響用戶體驗(yàn),因?yàn)?onPause 方法執(zhí)行不完丛版,Activity就總是可見的巩掺,給用戶的體驗(yàn)就是反應(yīng)遲鈍。
Stop:停止階段
該階段Activity不可見页畦,但是尚未注銷胖替,仍在內(nèi)存中。在該階段也可以做一些資源釋放工作豫缨。一旦Pause無(wú)法快速完成資源釋放工作独令,可以留一部分工作在onStop中完成,這個(gè)階段界面不可見好芭,給用戶的體驗(yàn)會(huì)稍好一些燃箭。但是,需要注意舍败,該階段不見得總有機(jī)會(huì)執(zhí)行招狸,當(dāng) onPause 中的任務(wù)比較耗時(shí)時(shí),就有可能被強(qiáng)制終止邻薯。所以裙戏,一些非常關(guān)鍵的工作,還是要放在onPause中完成厕诡,在onStop中有可能得不到執(zhí)行累榜。
Destroy:注銷階段
從內(nèi)存中清除。在 onDestroy 方法中木人,可以繼續(xù)做一些資源釋放工作信柿,以及回收工作。
Restart:重新開始階段
當(dāng)切換回來(lái)時(shí)自動(dòng)進(jìn)入該階段醒第,該階段Activity可見渔嚷。可以從其他Activity切換回來(lái)稠曼,也可以是按Home鍵后進(jìn)入到桌面形病,處理完其他事務(wù)后,單擊該App切換回來(lái)霞幅。不管哪種操作漠吻,都會(huì)自動(dòng)進(jìn)入該階段。一般不在onRestart中做工作司恳。