Android?Activity生命周期調(diào)用的理解
狀態(tài)
活動(dòng)存放在一個(gè)叫返回棧的一個(gè)集合,當(dāng)重新打開一個(gè)Activity時(shí),它就會(huì)出現(xiàn)在棧頂。當(dāng)要銷毀該活動(dòng)時(shí),調(diào)用finish()或back,棧頂?shù)幕顒?dòng)就會(huì)出棧。
運(yùn)行狀態(tài):一個(gè)活動(dòng)處于棧頂時(shí)
暫停狀態(tài):不處于棧頂,但仍然可見。(失去焦點(diǎn),非全屏或透明的activity放置在棧頂)
停止?fàn)顟B(tài):不處于棧頂,也不可見,但還是會(huì)為它保留一些變量的相關(guān)數(shù)據(jù)。(被覆蓋)
銷毀狀態(tài):在棧中移除(killed狀態(tài))
啟動(dòng)模式
standard模式:Activity的默認(rèn)啟動(dòng)模式。對Activity的啟動(dòng)和切換沒有任何限制,任何時(shí)候我們通過startActivity或startActivityForResult()啟動(dòng)一個(gè)standard模式的activity時(shí),系統(tǒng)都會(huì)創(chuàng)建實(shí)例并放置到棧頂?!就ㄟ^intent跳轉(zhuǎn)的時(shí)候會(huì)創(chuàng)建新的activity實(shí)例,重復(fù)創(chuàng)建】
singleTop模式:設(shè)置成該模式時(shí),任務(wù)棧的棧頂不能同時(shí)存在兩個(gè)Activity的實(shí)例。但在整個(gè)棧中,可以存在多個(gè)實(shí)例。防止同一個(gè)Activity重復(fù)創(chuàng)建或啟動(dòng)多次【通過intent跳轉(zhuǎn)的activity在棧頂,直接復(fù)用;若棧頂沒有,重新創(chuàng)建】
singleTask模式:整個(gè)任務(wù)棧中只能存在該activity的一個(gè)實(shí)例。重復(fù)啟動(dòng)時(shí),系統(tǒng)會(huì)銷毀該實(shí)例之前的所有其他activity,將該activity移至棧頂?!綼pp在啟動(dòng)時(shí)都會(huì)創(chuàng)建一個(gè)任務(wù)棧,應(yīng)用內(nèi)被創(chuàng)建的activity都會(huì)放進(jìn)這個(gè)棧內(nèi)。只要activity實(shí)例被創(chuàng)建過,再次創(chuàng)建時(shí)都直接復(fù)用已有實(shí)例】
singleInstance模式:該模式下的Activity都將獨(dú)立存在一個(gè)任務(wù)棧下,并且不能重復(fù)創(chuàng)建或啟動(dòng)。當(dāng)啟動(dòng)一個(gè)singleInstance模式的Activity時(shí),系統(tǒng)會(huì)為應(yīng)用創(chuàng)建一個(gè)新的前臺任務(wù)棧,將Activity置于棧內(nèi)?!菊麄€(gè)Android系統(tǒng)中實(shí)例唯一,可以讓別人的程序直接復(fù)用這個(gè)Activity】
其他時(shí)候要啟動(dòng)其他非singleInstance模式的Activity時(shí),系統(tǒng)創(chuàng)建另一個(gè)前臺任務(wù)棧,將非singleInstance模式的Activity按照啟動(dòng)順序置于前臺任務(wù)棧。將singleInstance模式的Activity所在的任務(wù)棧移至后臺。之后啟動(dòng)任何Activity都是前后臺任務(wù)棧的切換。
重復(fù)啟動(dòng)同一個(gè)singleInstance模式的Activity時(shí),系統(tǒng)將Activity所在的任務(wù)棧切換至前臺,而啟動(dòng)其他類型Activity,不需要切換任務(wù)棧,添加新實(shí)例即可。
操作APP時(shí)生命周期調(diào)用
點(diǎn)開Activity,按Home鍵回到主屏:onPause() , onStop()
主屏,再次點(diǎn)擊App回到Activity:onRestart() , onStart() , onResume()
在A Activity上打開 B Activity:A onPause() , B onCreate() , B onStart() , B on Resume() , A onStop()
點(diǎn)擊Back鍵:onPause() , onStop() , onDestroy()
Activity異常生命周期
異常生命周期:Activity被系統(tǒng)回收或當(dāng)前設(shè)備的Configuration發(fā)生變化(橫豎屏),導(dǎo)致Activity被銷毀重建
Configuration發(fā)生變化導(dǎo)致Activity被殺死并重建
onSave【Restore】InstanceState():系統(tǒng)自動(dòng)調(diào)用,配置發(fā)生變化,Activity被異常銷毀,用于存儲(chǔ)數(shù)據(jù)(時(shí)機(jī)在onStop之前)。調(diào)用onRestore,把通過onSave保存的Bundle對象作為參數(shù)傳給onRestore和onCreate。正常銷毀,并不會(huì)調(diào)用這兩個(gè)方法。
onRestore和onCreate的區(qū)別:都可進(jìn)行數(shù)據(jù)恢復(fù)。但是onRestore一旦被系統(tǒng)回調(diào),其Bundle一定不為空,無需額外的判斷。但onCreate會(huì)出現(xiàn)為空的情況,當(dāng)Activity為正常啟動(dòng)時(shí),Bundle就會(huì)為空,需要額外判斷。
使Activity在系統(tǒng)配置發(fā)生變化后不重建:給Activity指定configChange屬性【orientation, screenSize】。orientation對應(yīng)API < 13 , screenSize 對應(yīng)API > 13 。設(shè)置之后,橫豎屏切換時(shí),不會(huì)再重建,取而代之是回調(diào)onConfigurationChanged
內(nèi)存不足導(dǎo)致低優(yōu)先級的Activity被殺死 內(nèi)存不足,按照一定優(yōu)先級殺死目標(biāo)Activity的進(jìn)程來回收內(nèi)存。onSave會(huì)被調(diào)用用于存儲(chǔ)數(shù)據(jù),在后續(xù)恢復(fù)會(huì)調(diào)用onRestore恢復(fù)數(shù)據(jù)。
總結(jié)
到此這篇關(guān)于Android Activity生命周期調(diào)用的理解的文章就介紹到這了,更多相關(guān)Android Activity生命周期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
DrawerLayout結(jié)合Tollbar實(shí)現(xiàn)菜單側(cè)滑效果
這篇文章主要為大家詳細(xì)介紹了DrawerLayout結(jié)合Tollbar實(shí)現(xiàn)菜單側(cè)滑效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12詳解Android Handler機(jī)制和Looper Handler Message關(guān)系
Handler是Android線程之間的消息機(jī)制,主要的作用是將一個(gè)任務(wù)切換到指定的線程中去執(zhí)行,準(zhǔn)確的說是切換到構(gòu)成Handler的looper所在的線程中去出處理。本文將詳細(xì)介紹Android Handler機(jī)制和Looper Handler Message關(guān)系。2021-06-06Android實(shí)現(xiàn)邊錄邊播應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)邊錄邊播應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11Android中Binder詳細(xì)學(xué)習(xí)心得
這篇文章主要介紹了Android中Binder詳細(xì)學(xué)習(xí)心得,并分析了Binder的詳細(xì)用法,需要的朋友參考下吧。2018-01-01Android實(shí)現(xiàn)彩信附件的添加與刪除功能
這篇文章主要介紹了Android實(shí)現(xiàn)彩信附件的添加與刪除功能,涉及Android針對常見多媒體文件的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06android實(shí)現(xiàn)Uri獲取真實(shí)路徑轉(zhuǎn)換成File的方法
這篇文章主要介紹了android實(shí)現(xiàn)Uri獲取真實(shí)路徑轉(zhuǎn)換成File的方法,涉及Android操作路徑的相關(guān)技巧,需要的朋友可以參考下2015-05-05Android自定義Drawable實(shí)現(xiàn)圓形和圓角
這篇文章主要為大家詳細(xì)介紹了Android自定義Drawable實(shí)現(xiàn)圓形和圓角,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09