Activity的復(fù)習(xí)①生命周期

Activity

Activity在應(yīng)用中的表現(xiàn)就是一個(gè)用戶界面,他會(huì)加載指定的布局文件來(lái)顯示各種UI元素,列如Textvew,EditView,ImageView,ListView等,并且為這些UI元素設(shè)置事件處理函數(shù),使得用戶可以跟這些UI進(jìn)行交互。同時(shí),Activity還可以在不同的Activity之間跳轉(zhuǎn),將不同的頁(yè)面串聯(lián)在一起,共同完成指定的操作流程。每一個(gè)應(yīng)用都是由一個(gè)或者多個(gè)Activity組成,它是android應(yīng)用中不可缺少的部分,同時(shí)也是四大組件之一。(ps:在《android開發(fā)進(jìn)階 從小工到專家 》中這樣介紹一個(gè)Activity,我覺得非常形象,好理解。)

Activity的生命周期

每個(gè)Activity都有生命周期

Paste_Image.png
1,onCreate()

當(dāng)Activity被創(chuàng)建時(shí),這個(gè)方法將被是被調(diào)用,一般會(huì)在這個(gè)方法里完成Activity的初始化操作,如,設(shè)置布局,實(shí)例化組件,綁定事件。

2,onStart()

這個(gè)方法將會(huì)在onCreate被調(diào)用之后調(diào)用,但是此時(shí)的Activity還是處于一種不可見的狀態(tài)。

3,onResume()

當(dāng)Activity變?yōu)榭梢姷臅r(shí)候,這個(gè)方法將會(huì)被調(diào)用,執(zhí)行完onResume之后,Activity就會(huì)請(qǐng)求AMS渲染它所管理的視圖。此時(shí)的Activity一定會(huì)位于返回棧的棧頂,并且處于運(yùn)行狀態(tài)。

4,onPause()

這個(gè)函數(shù)在系統(tǒng)準(zhǔn)備去啟動(dòng)或者恢復(fù)另一個(gè)Activity時(shí)調(diào)用,也就是在Activity即將從可見狀態(tài)變?yōu)椴豢梢姷臅r(shí)。但是Activity此時(shí)還是可見的。

5,onStop()

這個(gè)函數(shù)在Activity完全不可見的時(shí)候調(diào)用。它和onPause的主要區(qū)別在于,如果啟動(dòng)的Activity是一個(gè)對(duì)話框式的Activity,那么onPause會(huì)被執(zhí)行,而onStop就不會(huì)被執(zhí)行。

6,onDestory()

這個(gè)函數(shù)在Activity被銷毀之前調(diào)用,之后Activity就會(huì)被移除棧。

7,onRestart()

這個(gè)函數(shù)有停止?fàn)顟B(tài)重新轉(zhuǎn)為運(yùn)行狀態(tài)之前被調(diào)用,之后Activity會(huì)被重新運(yùn)行起來(lái).被調(diào)用之后,Activity就會(huì)執(zhí)行onStart這個(gè)函數(shù)

生命路線(懶得總結(jié)了,以下是從網(wǎng)上復(fù)制一下的

1.啟動(dòng)Activity:系統(tǒng)會(huì)先調(diào)用onCreate方法,然后調(diào)用onStart方法,最后調(diào)用onResume,Activity進(jìn)入運(yùn)行狀態(tài)。

2.當(dāng)前Activity被其他Activity覆蓋其上或被鎖屏:系統(tǒng)會(huì)調(diào)用onPause方法,暫停當(dāng)前Activity的執(zhí)行。

3.當(dāng)前Activity由被覆蓋狀態(tài)回到前臺(tái)或解鎖屏:系統(tǒng)會(huì)調(diào)用onResume方法,再次進(jìn)入運(yùn)行狀態(tài)。

4.當(dāng)前Activity轉(zhuǎn)到新的Activity界面或按Home鍵回到主屏,自身退居后臺(tái):系統(tǒng)會(huì)先調(diào)用onPause方法,然后調(diào)用onStop方法,進(jìn)入停滯狀態(tài)。

5.用戶后退回到此Activity:系統(tǒng)會(huì)先調(diào)用onRestart方法,然后調(diào)用onStart方法,最后調(diào)用onResume方法,再次進(jìn)入運(yùn)行狀態(tài)。

6.當(dāng)前Activity處于被覆蓋狀態(tài)或者后臺(tái)不可見狀態(tài),即第2步和第4步,系統(tǒng)內(nèi)存不足,殺死當(dāng)前Activity,而后用戶退回當(dāng)前Activity:再次調(diào)用onCreate方法、onStart方法、onResume方法,進(jìn)入運(yùn)行狀態(tài)。

7.用戶退出當(dāng)前Activity:系統(tǒng)先調(diào)用onPause方法,然后調(diào)用onStop方法,最后調(diào)用onDestory方法,結(jié)束當(dāng)前Activity。

被誤殺的應(yīng)用,臨時(shí)數(shù)據(jù)的保存與恢復(fù)
onSaveInstanceState:

1)當(dāng)應(yīng)用被按下Home鍵的后,系統(tǒng)將會(huì)調(diào)用此方法
2)因?yàn)橄到y(tǒng)內(nèi)存過(guò)低時(shí),在Activity被覆蓋或退居后臺(tái)之后,系統(tǒng)資源不足將其殺死
3)按下手機(jī)電源鍵的時(shí)候
4)橫豎屏切換的時(shí)候,因?yàn)樾枰蠕N毀activity,再重新創(chuàng)建新的activity
(ps:此方法在onpause方法前被調(diào)用)

onRestoreInstanceState:

1)當(dāng)應(yīng)用被按下Home鍵的后。又重新回到activity的時(shí)候被調(diào)用
2)因?yàn)橄到y(tǒng)內(nèi)存過(guò)低時(shí),在Activity被覆蓋或退居后臺(tái)之后,系統(tǒng)資源不足將其殺死。用戶又重新打開activity的時(shí)候
3)按下手機(jī)電源鍵的時(shí)候,又回到activity的時(shí)候
4)橫豎屏切換的時(shí)候,因?yàn)樾枰蠕N毀activity,再重新創(chuàng)建新的activity
(ps:此方法在onstart方法后被調(diào)用,介于onstar和onresume)

使用方式
Paste_Image.png
Paste_Image.png

有空就寫寫筆記,感覺挺好的,對(duì)知識(shí)的理解會(huì)更加深刻

計(jì)劃

下一章復(fù)習(xí)activity的啟動(dòng)模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 啟動(dòng)與銷毀Activity 不同于使用 main() 方法啟動(dòng)應(yīng)用的其他編程范例,Android 系統(tǒng)會(huì)通過(guò)調(diào)用對(duì)...
    安卓Boy閱讀 1,788評(píng)論 3 5
  • 13班軍訓(xùn)簡(jiǎn)報(bào)(二) 今天是我們軍訓(xùn)生活的第二天,天空中鋪著一層厚厚的白地毯,綠茵場(chǎng)上挺立著一排...
    氣球精靈閱讀 617評(píng)論 1 1
  • 1:50走路去上班。 等紅綠燈穿過(guò)路口。陽(yáng)光直射在水泥路上,如炙熱利劍穿骨;水泥路的反光,車身的反光,明晃晃刺眼。...
    十萬(wàn)錯(cuò)錯(cuò)閱讀 292評(píng)論 0 1