標籤:程式 開發人員 android activity 活動
前言
掌握好Activ的生命週期對任何安卓開發人員來說都很重要,當你深入理解時,就可以編寫出更加流暢連貫的程式/應用。你的程式將會擁有更好的使用者體驗。
(一)活動狀態:每個Activity在其生命週期中最多可能會有四種狀態
a:運行狀態, 當一個Activity位於回退棧棧頂時,這是Activity就處於運行狀態。系統是不會回收處於運行狀態的活動的,這樣會帶來非常差的使用者體驗。
b:暫停狀態,當一個活動不在處於棧頂位置,但仍然可見,這時就進入了暫停狀態。什麼叫做不在棧頂卻又可見呢,比如彈出框式的Activity,此時並不會佔滿整個螢幕,下面一層Activity還是可見的。處於暫停狀態的Activity仍然是完全存活的,系統只有在記憶體極低的情況下才會考慮回收這種Activity。當然您也可以調用finish();方法來強制回收。
c:停止狀態,當一個Activity不在處於棧頂且完全不可見的時候就進入了停止狀態。但系統依然會為此類Activity儲存響應的狀態和成員變數,當其他地方需要記憶體時,處於停止狀態的Activity很有可能會被系統回收。
d:銷毀狀態,當一個活動從回退棧中移除後就編程了銷毀狀態。系統會回收處於這種狀態的活動,來保證手機的記憶體充足。
(二)Activity的生命週期:
讓我們先來看一看官方提供的標準圖
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/79/D8/wKioL1acqfWCB9OfAAKKucqDlcc734.jpg" title="activity.jpg" alt="wKioL1acqfWCB9OfAAKKucqDlcc734.jpg" />
看到這兒想必親已經有點脈絡了吧,小編再來簡單介紹下吧。
a: onCreate();這個方法想必親已經見過幾百遍了,在項目建立時會有一個主類繼承至Activity,並且都重寫了這個方法,他會在Activity第一次被建立的時候調用。而您應該在該方法中完成一些初始化的操作,比如說載入布局,綁定事件,產生一些必要參數資料等等。
b: onStart();方法這個方法在Activity中由不可見變為可見的時候調用,一般不用我們重寫。
c: onResume();這個方法在Activity準備好和使用者進行互動的時候調用。此時的Activity一定是位於回退棧棧頂的的,並且處於運行狀態。
d: onPause();這個方法在系統準備去啟動或恢複另一個活動的時候調用。我們應該在該方法中將一些消耗CPU的資源釋放掉,以及儲存一些相關的資料,這個方法執行速度一定要快,不然會影響到新的棧頂的Activity的使用。
e: onStop();該方法在Activity完全不可見的時候調用,他與onPause()方法的區別主要在:如果啟動的新Activity是一個對話方塊式的活動,那麼onPause();方法會得到執行,而onStop()方法則不會被調用。
f: onDestroy();這個方法在Activity被銷毀之前調用,之後的狀態則變為銷毀狀態。
g: onRestart();這個方法在Activity停止狀態轉為運行狀態之前調用,相當於重啟。
以上的方法除了onRestart()方法,其他都是量量相對。從而又可以將Activity分為三種生存期。
①: 完整生存期,即Activity在onCreate()方法和onDestroy();方法之間所經曆的。一般情況下,一個Activity在onCreate();方法中完成各種初始化操作,而在onDestroy()方法中完成釋放記憶體的操作。
②: 可見生存期,即Activity在onStart();方法和onStop();方法之間所經曆的。此階段即便有可能無法和使用者進行互動,但Activity總數可見的。我們應該通過這兩個方法中合理的管理那些對使用者可見的資源,比如在onStart()方法中對資源進行載入,而在onStop()方法中對資源進行釋放,從而保證處於停止狀態的Activity不會對系統佔用過多的記憶體。
③: 前台生存期,級活動在onResume()方法和onPause()方法之間所經曆的。在此生存期Activity總數處於運行狀態的,此時的Activity可以和使用者進行互動,平時我們看的最多的也就是該生存期的Activity...................
本文出自 “易大帥的修鍊之路” 部落格,請務必保留此出處http://konglong.blog.51cto.com/9153276/1736261
Android活動(Activity)狀態與生命週期總結