標籤:前台 登出 sum img pad oba 並且 developer 利用
掌握Android的生命週期對於如何一個剛剛接觸Android初學者來說是至關重要的,在然後的開發中會給我留有更多的時刻餘地,當自己正在認識Android中整個聲明周期後,會編寫出更加的流暢的程式
應用程式會擁有更好的使用者體驗的效果
活動狀態
在Android中活動中生命週期有四個狀態
1.運行狀態也稱為顯示狀態:當一個活動處於或者返回棧頂位置,這時候的活動就是處於運行狀態
2.暫停狀態:當一個活動不再處於棧頂位置時,但是仍然可見,則該活動就進入了暫停狀態
3.停止狀態:當一個活動不再棧頂位置,並且處於不可時則該活動處於停止狀態
4.銷毀狀態:當一個活動從返回棧頂中移除就進入銷毀狀態。系統會回收處於這種狀態的活動,從而保證手機系統記憶體充足
活動周期
活動循環圖表 先貼一張來自官方文檔(http://developer.android.com/reference/android/app/Activity.html)的圖,相信大家都看到過。
| onCreate() |
activity第一次被建立時調用。在這裡你應該完成所有常見的靜態設定工作——建立view、綁定list資料等等。 本方法傳入一個包含了該activity前一個狀態的Bundle對象(如果之前已捕獲了狀態的話,詳見後面的儲存Activity狀態)。 下一個回調方法總是onStart()。 |
否 |
onStart() |
| onRestart() |
activity被停止後、又再次被啟動之前調用。 下一個回調方法總是onStart() |
否 |
onStart() |
| onStart() |
activity要顯示給使用者之前調用。 如果activity進入前台,則下一個回調方法是onResume();如果進入隱藏狀態,則下一個回調方法是onStop()。 |
否 |
onResume() 或 onStop() |
| onResume() |
activity開始與使用者互動之前調用。這時activity是在activity棧的頂端,使用者可以向其中輸入。 下一個回調方法總是onPause()。 |
否 |
onPause() |
| onPause() |
當系統準備啟動另一個正在恢複的activity時調用。這個方法通常用於把未儲存的改動提交為永久資料、停止動畫播放、以及其它可能消耗CPU的工作等等。 它應該非常迅速地完成工作,因為下一個activity在本方法返回前是不會被恢複啟動並執行。 如果activity返回前台,則下一個回調方法是onResume();如果進入使用者不可見狀態,則下一個是onStop() |
可以 |
onResume() 或 onStop() |
| onStop() |
當activity不再對使用者可見時調用。原因可能是它即將被銷毀、或者其它activity(已有或建立的)被恢複運行並要覆蓋本activity。 如果activity還會回來與使用者互動,則下一個回調方法是onRestart();如果這個activity即將消失,則下一個回調方法是onDestroy() |
可以 |
onRestart() 或 onDestroy() |
| onDestroy() |
在本activity被銷毀前調用。這是activity收到的最後一個調用。 可能是因為activity完成了工作(有些人在這裡調用finish()), 也可能是因為系統為了騰出空間而臨時銷毀activity的本執行個體。 可以利用isFinishing() 方法來區分這兩種情況。 |
可以 |
無 |
- activity的完整生存期會在 onCreate() 調用和 onDestroy() 調用之間發生。 你的activity應該在 onCreate() 方法裡完成所有“全域global”狀態的設定(比如定義layout),而在onDestroy() 方法裡釋放所有佔用的資源。 例如,如果你的activity有一個後台啟動並執行線程,用於從網路下載資料,那麼你應該在 onCreate() 方法裡建立這個線程並且在 onDestroy() 方法裡停止這個線程。
- activity的可見生存期會在 onStart() 調用和 onStop() 調用之間發生。在這期間,使用者可在螢幕上看見這個activity並可與之互動。 例如,當一個新的activity啟動後調用了 onStop() 方法,則這個activity就無法被看見了。 在這兩個方法之間,你可以管理那些顯示activity所需的資源。例如,你可以在 onStart() 方法裡註冊一個 BroadcastReceiver 用於監控影響使用者介面的改動。並且當使用者不再看到你的顯示內容時,在 onStop() 方法裡登出掉它。 系統會在activity的整個生存期內多次調用 onStart() 和onStop(), 因為activity可能會在顯示和隱藏之間不斷地來回切換。
- activity的前台生存期會在 onResume() 調用和 onPause() 之間發生。在這期間,activity是位於螢幕上所有其它的activity之前,並且擁有使用者的輸入焦點。 activity可以頻繁地進入和退出前台——例如, 當裝置進入休眠時或者彈出一個對話方塊時, onPause() 就會被調用。因為這個狀態可能會經常發生轉換,為了避免切換遲緩引起的使用者等待,這兩個方法中的代碼應該相當地輕量化。
Android的生命週期學習