Android中activity的生命週期詳解

生命週期

週期即活動從開始到結束所經歷的各類狀態。生命週期即活動從開始到結束所經歷的各個狀態。從一個狀態到另外一個狀態的轉變,從無到有再到無,這樣一個過程當中所經歷的狀態就叫作生命週期。異步

Acitivity的四種狀態

  1. 運行:若是一個活動被移到了前臺(活動棧頂部)。
  2. 暫停:若是一個活動被另外一個非全屏的活動所覆蓋(好比一個Dialog),那麼該活動就失去了焦點,它將會暫停(但它仍然保留全部的狀態和成員信息,而且仍然是依附在WindowsManager上),在系統內存積極缺少的時候會將它殺死。
  3. 中止:若是一個活動被另外一個全屏活動徹底覆蓋,那麼該活動處於中止狀態(狀態和成員信息會保留,可是Activity已經再也不依附於WindowManager了)。同時,在系統缺少資源的時候會將它殺死(它會比暫停狀態的活動先殺死)。
  4. 重啓:若是一個活動在處於中止或者暫停的狀態下,系統內存缺少時會將其結束(finish)或者殺死(kill)。這種非正常狀況下,系統在殺死或者結束以前會調用onSaveInstance()方法來保存信息,同時,當Activity被移動到前臺時,從新啓動該Activity並調用onRestoreInstance()方法加載保留的信息,以保持原有的狀態。

生命週期狀態說明

生命週期方法

  1. onCreate:表示Activity正在被建立,這是生命週期的第一個方法。在這個方法中能夠作一些初始化的工做(加載佈局資源、初始化Activity所須要的數據等),耗時的工做在異步線程上完成。佈局

  2. onRestart:表示Activity正在從新啓動。通常狀況下,在當前Activity從不可見從新變爲可見的狀態時onRestart就會被調用。這種情形通常是因爲用戶的行爲所致使的,好比用戶按下Home鍵切換到桌面或者打開了一個新的Activity(這時當前Activity會暫停,也就是onPause和onStop被執行),接着用戶有回到了這個Activity,就會出現這種狀況。動畫

  3. onStart:表示Activity正在被啓動,而且即將開始。可是這個時候要注意它與onResume的區別。二者都表示Activity可見,可是onStart時Activity還正在加載其餘內容,正在向咱們展現,用戶還沒法看到,即沒法交互。.net

  4. onResume:表示Activity已經建立完成,而且能夠開始活動了,這個時候用戶已經能夠看到界面了,而且即將與用戶交互(完成該週期以後即可以響應用戶的交互事件了)。線程

  5. onPause:表示Activity正在暫停,正常狀況下,onStop接着就會被調用。通常來講,在這個生命週期狀態下,能夠作一些存儲數據、中止動畫的工做,可是不能太耗時,若是是因爲啓動新的Activity而喚醒的該狀態,那會影響到新Activity的顯示,緣由是onPause必須執行完,新的Activity的onResume纔會執行。cdn

  6. onStop:表示Activity即將中止,能夠作一些稍微重量級的回收工做,一樣也不能太耗時(能夠比onPause稍微好一點)。blog

  7. onDestroy:表示Activity即將被銷燬,這是Activity生命週期的最後一個回調,咱們能夠作一些回收工做和最終的資源釋放(如Service、BroadReceiver、Map等)。生命週期

  • 一個正常的Activity生命週期執行方法:(建立)onCreate ==> onStart ==> onResume ==>(銷燬)onPause ==> onStop ==> onDestroy
  • 關電源: onPause ==> onStop
  • 從新開電源鍵:onRestart ==> onStart ==> onResume
  • 點擊home鍵:onPause ==> onStop
  • 點擊返回鍵:onPause ==> onStop ==> onDestroy
  • ActivityA跳轉到ActivityB:ActivityA onPause ==> ActivityB onCreate ==> ActivityB onStart ==> ActivityB onResume ==> ActivityA onStop
  • ActivityB返回ActivityA: ActivityB onPause ==> ActivityA onRestart ==> ActivityA onStart ==> ActivityA onResume ==> ActivityB onStop ==> ActivityB onDestroy

常見的就這幾種方式了,橫屏的暫時沒有使用過沒有研究,固然也不排除一些異常狀況。參考blog.csdn.net/woshimaling…,上面文字說明基本copy,主要用於複習。事件

相關文章
相關標籤/搜索