四大組件之a(chǎn)ctivity(一)

寫在前面:學(xué)習(xí)安卓很長一段時間了,以前沒有寫博文的習(xí)慣,都是將筆記寫在word上面,一次電腦壞了,沒有備份到云端,有種想哭的沖動,所以將他寫在簡書上面,溫故而知新,也可以防止丟失!??!

activity被稱之為活動(界面),是app中直接與用戶交互,運(yùn)行在主線程

一:activity的生命周期:


(1)正常時候的生命周期:

1.啟動activity:onCreate->onStart->onResume? activity進(jìn)入運(yùn)行狀態(tài)

2.結(jié)束activity:onPause->onStop->onDestory? activity退出

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

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

5.當(dāng)前activity轉(zhuǎn)到新的activity界面或按home鍵回到主屏,自身退居后臺:onPause->onStop,進(jìn)入停滯狀態(tài)(最小化)

6.用戶后退到此activity:onRestart->onStart->onResume,進(jìn)入運(yùn)行狀態(tài)(最大化)

7.當(dāng)處于2和4的狀態(tài),系統(tǒng)內(nèi)存不足的時候,會殺死當(dāng)前activity,用戶后退到當(dāng)前activity的時候:onCreate->onStart->onResume,進(jìn)入運(yùn)行狀態(tài)

(2)異常時候的生命周期

橫豎屏切換的時候的生命周期:onSaveInstanceState(保存一些臨時數(shù)據(jù))->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState(恢復(fù)一些臨時數(shù)據(jù))->onResume

眾所周知在橫豎屏切換的時候,activity會重新走一遍onCreate方法,比如格斗游戲,當(dāng)重新走onCreate方法的時候,角色會滿血復(fù)活,這樣顯然是不行的,那么我們一般會怎樣解決呢?,一般情況我們都會在androidmanifest.xmll中的activit元素加入這個屬性 ? ? ? ? ? ? ? Android:configChanges="orientation|keyboardHidden" 即可,設(shè)置屏幕朝向不敏感

二:activity的四種啟動模式

activity的啟動模式有四種:

standard

? ? 默認(rèn)的啟動模式,開啟一個activity,系統(tǒng)會創(chuàng)建這個activity的實(shí)例對象,將其放在應(yīng)用程序任務(wù)棧的棧頂,也就是說,每次啟動一個activity,新的activity會疊加在舊的activity上面,按返回鍵退出的時候,按照先進(jìn)后出的原則依次退棧。

singleTask?

? ?單一任務(wù)模式,開啟一個activity,系統(tǒng)會去應(yīng)用程序的任務(wù)棧中查找有沒有這個activity的實(shí)例對象,如果有,就會將這個activity之前的所有activity的實(shí)例對象,使其置于任務(wù)棧的棧頂,如果沒有,系統(tǒng)會在棧頂創(chuàng)建這個activity的實(shí)例對象

singleTop

? ?單一頂部模式,開啟一個activity,系統(tǒng)會去應(yīng)用程序的任務(wù)棧的棧頂查找有沒有這個activity的實(shí)例對象,如果有,就復(fù)用棧頂?shù)腶ctivity實(shí)例對象,如果沒有,就在棧頂創(chuàng)建activity的實(shí)例對象

singleInstance

? ? 單一實(shí)例模式,開啟一個activity,系統(tǒng)會給這個activity創(chuàng)建一個單獨(dú)的任務(wù)棧,這個任務(wù)棧只有這一個activity的實(shí)例對象,獨(dú)一無二。

設(shè)置Activity的啟動模式,只需要在AndroidManifest.xml里對應(yīng)的標(biāo)簽設(shè)置Android:launchMode屬性,例如:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容