溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中Activity生命周期調用的示例分析

發(fā)布時間:2021-12-27 16:57:40 來源:億速云 閱讀:244 作者:小新 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關Android中Activity生命周期調用的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

狀態(tài)

活動存放在一個叫返回棧的一個集合,當重新打開一個Activity時,它就會出現(xiàn)在棧頂。當要銷毀該活動時,調用finish()或back,棧頂?shù)幕顒泳蜁鰲!?/p>

運行狀態(tài):一個活動處于棧頂時

暫停狀態(tài):不處于棧頂,但仍然可見。(失去焦點,非全屏或透明的activity放置在棧頂)

停止狀態(tài):不處于棧頂,也不可見,但還是會為它保留一些變量的相關數(shù)據(jù)。(被覆蓋)

銷毀狀態(tài):在棧中移除(killed狀態(tài))

Android中Activity生命周期調用的示例分析

啟動模式

standard模式:Activity的默認啟動模式。對Activity的啟動和切換沒有任何限制,任何時候我們通過startActivity或startActivityForResult()啟動一個standard模式的activity時,系統(tǒng)都會創(chuàng)建實例并放置到棧頂?!就ㄟ^intent跳轉的時候會創(chuàng)建新的activity實例,重復創(chuàng)建】

singleTop模式:設置成該模式時,任務棧的棧頂不能同時存在兩個Activity的實例。但在整個棧中,可以存在多個實例。防止同一個Activity重復創(chuàng)建或啟動多次【通過intent跳轉的activity在棧頂,直接復用;若棧頂沒有,重新創(chuàng)建】

singleTask模式:整個任務棧中只能存在該activity的一個實例。重復啟動時,系統(tǒng)會銷毀該實例之前的所有其他activity,將該activity移至棧頂?!綼pp在啟動時都會創(chuàng)建一個任務棧,應用內被創(chuàng)建的activity都會放進這個棧內。只要activity實例被創(chuàng)建過,再次創(chuàng)建時都直接復用已有實例】

singleInstance模式:該模式下的Activity都將獨立存在一個任務棧下,并且不能重復創(chuàng)建或啟動。當啟動一個singleInstance模式的Activity時,系統(tǒng)會為應用創(chuàng)建一個新的前臺任務棧,將Activity置于棧內。【整個Android系統(tǒng)中實例唯一,可以讓別人的程序直接復用這個Activity】

其他時候要啟動其他非singleInstance模式的Activity時,系統(tǒng)創(chuàng)建另一個前臺任務棧,將非singleInstance模式的Activity按照啟動順序置于前臺任務棧。將singleInstance模式的Activity所在的任務棧移至后臺。之后啟動任何Activity都是前后臺任務棧的切換。

重復啟動同一個singleInstance模式的Activity時,系統(tǒng)將Activity所在的任務棧切換至前臺,而啟動其他類型Activity,不需要切換任務棧,添加新實例即可。

操作APP時生命周期調用

點開Activity,按Home鍵回到主屏:onPause() , onStop()

主屏,再次點擊App回到Activity:onRestart() , onStart() , onResume()

在A Activity上打開 B Activity:A onPause() , B onCreate() , B onStart() , B on Resume() , A onStop()

點擊Back鍵:onPause() , onStop() , onDestroy()

Activity異常生命周期

異常生命周期:Activity被系統(tǒng)回收或當前設備的Configuration發(fā)生變化(橫豎屏),導致Activity被銷毀重建

Configuration發(fā)生變化導致Activity被殺死并重建

Android中Activity生命周期調用的示例分析

onSave【Restore】InstanceState():系統(tǒng)自動調用,配置發(fā)生變化,Activity被異常銷毀,用于存儲數(shù)據(jù)(時機在onStop之前)。調用onRestore,把通過onSave保存的Bundle對象作為參數(shù)傳給onRestore和onCreate。正常銷毀,并不會調用這兩個方法。

onRestore和onCreate的區(qū)別:都可進行數(shù)據(jù)恢復。但是onRestore一旦被系統(tǒng)回調,其Bundle一定不為空,無需額外的判斷。但onCreate會出現(xiàn)為空的情況,當Activity為正常啟動時,Bundle就會為空,需要額外判斷。

使Activity在系統(tǒng)配置發(fā)生變化后不重建:給Activity指定configChange屬性【orientation, screenSize】。orientation對應API < 13 , screenSize 對應API > 13 。設置之后,橫豎屏切換時,不會再重建,取而代之是回調onConfigurationChanged

內存不足導致低優(yōu)先級的Activity被殺死 內存不足,按照一定優(yōu)先級殺死目標Activity的進程來回收內存。onSave會被調用用于存儲數(shù)據(jù),在后續(xù)恢復會調用onRestore恢復數(shù)據(jù)。

關于“Android中Activity生命周期調用的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI