作者:堅果
華為雲享專家,InfoQ簽約作者,OpenHarmony布道師,電子發燒友鴻蒙MVP,阿裡雲專家部落客,51CTO部落格首席體驗官,開源項目GVA成員之一,專注于大前端技術的分享,包括Flutter,小程式,安卓,VUE,JavaScript。
Activity的生命周期
掌握Activity的生命周期對于Android開發者來說是非常重要的,當你深入了解Activity的生命周期之後,就可以寫出更加流暢而且連貫的代碼,
首先我們要認識到的就是Android是使用任務來管理Activity的,一個任務就是一組存放在棧裡的Activity的集合,這個棧也被稱為傳回棧,棧是一種先進後出的資料結構,在預設情況下,每當我們啟動一個新的Activity,他就會在傳回棧中入棧,并處于棧頂的位置,而當我們使用finish方法去銷毀一個Acivity,處于棧頂的Activity就會出棧,前一個入棧的Activity就會重新處于棧頂的位置,
Activity的四種狀态
1、 運作狀态:當一個活動位于傳回棧的棧頂時,這是活動就處于運作狀态;
2、 暫停狀态:當一個活動不處于棧頂時,但是仍然可見時,這是活動就進入了暫停狀态;
3、 停止狀态:當一個活動不再處于棧頂狀态,并且完全不可見的時候,就進入了停止狀态;
4、 銷毀狀态:當一個活動從傳回棧中移除後就變成了銷毀狀态。
Activity的生命周期 中的狀态 (大前端之旅)
Activity的生存期
1、 onCreate():每個活動都會重寫這個方法,它是活動在第一次被建立的時候調用,你應該在這個方法中完成活動的初始化操作,比如加載布局、綁定事件等,用來填充UI等;
2、 onStart():這個方法在活動由不可見變為可見的時候調用,這個時候可見生存周期開始;
3、 onResume():這個方法在活動準備好和使用者互動的時候調用,此時的活動一定位于傳回棧的棧頂,并處于運作狀态,也就是恢複被Pause(暫停)的Activity;;
4、 onPause():這個方法在系統準備去啟動或者恢複另一個活動的時候調用,通常會在這個方法中将一些消耗CPU的資源釋放掉,以及儲存一些關鍵資料。另外這個方法的執行一定要快,不然會影響到新的棧頂活動的使用;
5、 onStop():這個方法在活動完全不可見的時候調用。它和onPause()方法的差別在于,當啟動的新活動是一個對話框式的活動,那麼onPause()會得到執行,而onStop()不會得到執行。
6、 onDestroy():這個方法在活動被銷毀之前調用,之後活動的狀态将變為銷毀狀态,也就是終止Activity, 轉換為非活動狀态;
7、 onRestart():這個方法在活動由停止狀态變為運作狀态之前調用,也就是活動被重新啟動。
生存期:7個方法中除了onRestart()方法,其他都是兩兩相對,所有可以分為3種生存期
1、 完整生存期:活動在onCreate()方法和onDestroy()方法之間所經曆的,就是完整的生存期。一般情況下,一個活動會在onCreate()方法中完成各種初始化操作,而在onDestroy()方法中完成釋放記憶體的操作;
2、 可見生存期:活動在onStart()方法和onStop()方法之間所經曆的,就是可見生存期。在可見生存期内,活動對于使用者總是可見的,即便有可能無法和使用者進行互動,我們可以通過這兩個方法合理的管理那些對使用者可見的資源。比如在onStart()方法中對資源進行加載,在onStop()方法中對資源進行釋放,進而保證處于停止狀态的活動不會占用過多的記憶體;
3、 前台生存期:活動在onResume()方法和onPause()方法之間所經曆的,就是前台生存期。在前台生存期内,活動總是處于運作狀态,此事的活動是可以和使用者進行互動的,我們平時見到和接觸最多的就是這個狀态下的活動。
img
好的,今天的文章就分享到這兒。