Android生命周期

Android有7個核心生命周期,首先我們看下它們的含義,
1.生命周期中各個方法的含義和作用
(1)onCreate:create
表示創建,這是Activity生命周期的第一個方法,也是我們在android開發中接觸的最多的生命周期方法,它本身的作用是進行Activity的一些初始化作業,比如使用setContentView加載布局,對一些控制元件和變數進行初始化等,但也有很多人將很多與初始化無關的代碼放在這,其實這是不規范的,此時Activity還在后臺,不可見,所以影片不應該在這里初始化,因為看不到……
(2)onStart:start
表示啟動,這是Activity生命周期的第二個方法,此時Activity已經可見了,但是還沒出現在前臺,我們還看不到,無法與Activity互動,其實將Activity的初始化作業放在這也沒有什么問題,放在onCreate中是由于官方推薦的以及我們開發的習慣,
(3)onResume:resume
表示繼續、重新開始,這名字和它的職責也相同,此時Activity經過前兩個階段的初始化已經蓄勢待發,Activity在這個階段已經出現在前臺并且可見了,這個階段可以打開獨占設備
(4)onPause:pause
表示暫停,當Activity要跳到另一個Activity或應用正常退出時都會執行這個方法,此時Activity在前臺并可見,我們可以進行一些輕量級的存盤資料和去初始化的作業,不能太耗時,因為在跳轉Activity時只有當一個Activity執行完了onPause方法后另一個Activity才會啟動,而且android中指定如果onPause在500ms即0.5秒內沒有執行完畢的話就會強制關閉Activity,從生命周期圖中發現可以在這快速重啟,但這種情況其實很罕見,比如用戶切到下一個Activity的途中按back鍵快速得切回來,
(5)onStop:stop
表示停止,此時Activity已經不可見了,但是Activity物件還在記憶體中,沒有被銷毀,這個階段的主要作業也是做一些資源的回收作業,
(6)onDestroy:destroy
表示毀滅,這個階段Activity被銷毀,不可見,我們可以將還沒釋放的資源釋放,以及進行一些回收作業,
(7)onRestart:restart
表示重新開始,Activity在這時可見,當用戶按Home鍵切換到桌面后又切回來或者從后一個Activity切回前一個Activity就會觸發這個方法,這里一般不做什么操作,
當程式開始運行時,會執行 onCreate(),onStrat(),onResume().這三個方法,
onCreate()
您必須實作此回呼,其在系統首次創建 Activity 時觸發,Activity 會在創建后進入已創建狀態,在 onCreate() 方法中,您需執行基本應用啟動邏輯,該邏輯在 Activity 的整個生命周期中只應發生一次,
onStart()
當 Activity 進入“已開始”狀態時,系統會呼叫此回呼,onStart() 呼叫使 Activity 對用戶可見,因為應用會為 Activity 進入前臺并支持互動做準備,例如,應用通過此方法來初始化維護界面的代碼,
onStart() 方法會非常快速地完成,并且與“已創建”狀態一樣,Activity 不會一直處于“已開始”狀態,一旦此回呼結束,Activity 便會進入已恢復狀態,系統將呼叫 onResume() 方法,
onResume()
該方法執行完后,才可以進行互動,***
當我們點擊回傳鍵后,會執行

這種情況比較簡單,基本上是單個Activity從開始到結束的生命周期,
onPause()
系統將此方法視為用戶正在離開您的 Activity 的第一個標志(盡管這并不總是意味著活動正在遭到銷毀);此方法表示 Activity 不再位于前臺(盡管如果用戶處于多視窗模式,Activity 仍然可見),使用 onPause() 方法暫停或調整當 Activity 處于“已暫停”狀態時不應繼續(或應有節制地繼續)的操作,以及您希望很快恢復的操作,
下面這種情況很常見,跳轉到一個 Activity 或 Home 鍵回到桌面,
下面這 種 情 況 一 般 發 生 在 跳 轉 到 一 個 DialogActivity , Activity 并 沒 有 被 DiallogActivity 完全蓋住,比較少見,

這種情況多發生在螢屏旋轉時,這時候我們可以利用 onSavedInstance() 保存一 些資料,在 onCreate() 或 onRestoreInstanceState() 時拿到之前的一些資料,

當旋轉螢屏后,會先執行onSavedlnstance()方法,之后銷毀頁面,重新開始運行這個頁面,但是之前頁面的資料會保存,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/155368.html
標籤:AI
