Android:Activity生命週期

來源:互聯網
上載者:User

標籤:

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()
這個方法在活動由停止狀態變為運行狀態之前調用,也就是活動被重新啟動了。

Android官方提供了一張活動生命週期的


以上七個方法中除了onRestart()方法,其他都是兩兩相對的,從而又可以將活動分為三種生存期。
1. 完整生存期
活動在onCreate()方法和onDestroy()方法之間所經曆的,就是完整生存期。一般情況下,一個活動會在onCreate()方法中完成各種初始化操作,而在onDestroy()方法中完成釋放記憶體的操作。
2. 可見生存期
活動在onStart()方法和onStop()方法之間所經曆的,就是可見生存期。在可見生存期內,活動對於使用者總是可見的,即便有可能無法和使用者進行互動。

我們可以通過這兩個方法,合理地管理那些對使用者可見的資源。比如在onStart()方法中對資源進行載入,而在onStop()方法中對資源進行釋放,從而保證處於停止狀態的活動不會佔用過多記憶體。
3. 前台生存期
活動在onResume()方法和onPause()方法之間所經曆的,就是前台生存期。在前台生存期內,活動總是處於運行狀態的,此時的活動是可以和使用者進行相互的,我們平時看到和接觸最多的也這個狀態下的活動。


Android:Activity生命週期

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.