活動的生命週期介紹

掌握活動的生命週期對任何 Android 開發者來說都非常重要,當你深入理解活動的生命週期之後,就可以寫出更加連貫流暢的程序,並在如何合理管理應用資源方面,你會發揮的遊刃有餘。你的應用程序將會擁有更好的用戶體驗。

返回棧

Android 中的活動是可以層疊的。我們每啓動一個新的活動,就會覆蓋在原活動之上,然後點擊 Back 鍵會銷燬最上面的活動,下面的一個活動就會重新顯示出來。

Android 是使用任務(Task)來管理活動的,一個任務就是一組存放在棧裏的活動的集合,這個棧也被稱作返回棧(Back Stack)。棧是一種後進先出的數據結構,在默認情況下,每當我們啓動了一個新的活動,它會在返回棧中入棧,並處於棧頂的位置。而每當我們按下 Back 鍵或調用 finish()方法去銷燬一個活動時,處於棧頂的活動會出棧,這時前一個入棧的活動就會重新處於棧頂的位置。系統總是會顯示處於棧頂的活動給用戶。

活動的生命週期介紹

活動的四種狀態

每個活動在其生命週期中最多可能會有四種狀態。

  • 1、運行狀態

當一個活動位於返回棧的棧頂時,這時活動就處於運行狀態。系統最不願意回收的就是處於運行狀態的活動,因爲這會帶來非常差的用戶體驗。

  • 2、暫停狀態

當一個活動不再處於棧頂位置,但仍然可見時,這時活動就進入了暫停狀態。你可能會覺得既然活動已經不在棧頂了,還怎麼會可見呢?這是因爲並不是每一個活動都會佔滿整個屏幕的,比如對話框形式的活動只會佔用屏幕中間的部分區域,你很快就會在後面看到這種活動。處於暫停狀態的活動仍然是完全存活着的,系統也不願意去回收這種活動(因爲它還是可見的,回收可見的東西都會在用戶體驗方面有不好的影響),只有在內存極低的情況下,系統纔會去考慮回收這種活動。

  • 3、停止狀態

當一個活動不再處於棧頂位置,並且完全不可見的時候,就進入了停止狀態。系統仍然會爲這種活動保存相應的狀態和成員變量,但是這並不是完全可靠的,當其他地方需要內存時,處於停止狀態的活動有可能會被系統回收

  • 4、銷燬狀態

當一個活動從返回棧中移除後就變成了銷燬狀態。系統會最傾向於回收處於這種狀態的活動,從而保證手機的內存充足。

Activity 類的七個回調方法

  • 1、onCreate()

每個活動中我們都重寫了這個方法,它會在活動第一次被創建的時候調用。在這個方法中完成活動的初始化操作,比如說加載佈局、綁定事件等。

  • 2、onStart()

這個方法在活動由不可見變爲可見的時候調用

  • 3、onResume()

這個方法在活動準備好和用戶進行交互的時候調用。此時的活動一定位於返回棧的棧頂,並且處於運行狀態。

  • 4、onPause()

這個方法在系統準備去啓動或者恢復另一個活動的時候調用。我們通常會在這個方法中將一些消耗 CPU 的資源釋放掉,以及保存一些關鍵數據,但這個方法的執行速度一定要快,不然會影響到新的棧頂活動的使用。

  • 5、onStop()

這個方法在活動完全不可見的時候調用。它和 onPause() 方法的主要區別在於,如果啓動的新活動是一個對話框式的活動,那麼 onPause() 方法會得到執行,而 onStop() 方法並不會執行。

  • 6、onDestroy()

這個方法在活動被銷燬之前調用,之後活動的狀態將變爲銷燬狀態。

  • 7、onRestart()

這個方法在活動由停止狀態變爲運行狀態之前調用,也就是活動被重新啓動了。

Activity類的三種生存期

Activity 類的七個回調方法中除了 onRestart() 方法,其他都是兩兩相對的,從而又可以將活動分爲三種生存期。

  • 1、完整生存期

活動在 onCreate() 方法和 onDestroy() 方法之間所經歷的,就是完整生存期。一般情況下,一個活動會在 onCreate() 方法中完成各種初始化操作,而在 onDestroy() 方法中完成釋放內存的操作。

  • 2、可見生存期

活動在 onStart() 方法和 onStop() 方法之間所經歷的,就是可見生存期。在可見生存期內,活動對於用戶總是可見的,即便有可能無法和用戶進行交互。我們可以通過這兩個方法,合理地管理那些對用戶可見的資源。比如在 onStart() 方法中對資源進行加載,而在 onStop() 方法中對資源進行釋放,從而保證處於停止狀態的活動不會佔用過多內存。

  • 3、前臺生存期

活動在 onResume() 方法和 onPause() 方法之間所經歷的,就是前臺生存期。在前臺生存期內,活動總是處於運行狀態的,此時的活動是可以和用戶進行相互的,我們平時看到和接觸最多的也這個狀態下的活動。

Android 官方提供了一張活動生命週期的示意圖 :

活動的生命週期介紹

by web開發者 from http://weber.pub/

本文地址: http://weber.pub/安卓筆記8-活動的生命週期介紹/297.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章