Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android的Activity生命周期狀態

Android的Activity生命周期狀態

編輯:Android開發教程

Activity生命周期:

一個activity主要有三個狀態:

當在屏幕前台時(位於當前任務堆棧的頂部),它是活躍或運行的狀態。它就是相應用戶操作的activity。

當它失去焦點但仍然對用戶可見時,它處於暫停狀態。即是:在它之上有另外一個activity。這個activity也許是透明的,或者未能完全遮蔽全屏,所以被暫停的activity仍對用戶可見。暫停的activity仍然是存活狀態(它保留著所有的狀態和成員信息並連接至窗口管理器),但當系統處於極低內存的情況下,仍然可以殺死這 個activity。

如果它完全被另一個activity覆蓋是,它處於停止狀態。它仍然保留所有的狀態和成員信息。然而它不在為用戶可見,所以它的窗口將被隱藏,如果其它地方需要內存,則系統經常會殺死這個activity。

如果一個activity處於暫停或停止狀態,系統可以通過要求它結束(調用它的 finish() 方法)或直接殺死它的進程來將它驅出內存。當它再次為用戶可見的時候,它只能完全重新啟動並恢復至以前的狀態。

當一個activity從這個狀態轉變到另一個狀態時,它被以下列protected方法所通知:

void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()

你可以重載所有這些方法以在狀態改變時進行合適的工作。所有的activity都必須實現 onCreate() 用以當對象第一次實例化時進行初始化設置。很多情況下我在activity會中實現 onPause()以提交數據變化或准備停止與用戶的交互。

調用父類

所有activity生命周期方法的實現都必須先調用其父類的版本。比如說:

protected void onPause() {
super.onPause();
. . .
}

總得來說,這七個方法定義了一個activity完整的生命周期。實現這些方法可以幫助你監察三個嵌套的生命周期循環:

一個activity 完整的生命周期自第一次調用 onCreate()開始,直至調用onDestroy()為止。activity在onCreate()中設置所有“全局”狀態以完成初始化,而在onDestroy()中釋放所有系統資源。比如說,如果activity有一個線程在後台運行以從網絡上下載數據,它會以 onCreate()創建那個線程,而以 onDestroy()銷毀那個線程。

一個activity的可視生命周期自 onStart() 調用開始直到相應的 onStop()調用。在此期間,用戶可以在屏幕上看到此activity,盡管它也許並不是位於前台或者正在與用戶做交互。在這兩個方法中,你可以管控用來向用戶顯示這個activity的資源。比如說,你可以在onStart() 中注冊一個BroadcastReceiver 來監控會影響到你UI的改變,而在onStop() 中來取消注冊,這時用戶是無法看到你的程序顯示的內容的。onStart() 和 onStop() 方法可以隨著應用程序是否為用戶可見而被多次調用。

一個activity的 前台生命周期自 onResume() 調用起,至相應的 onPause()調用為止。在此期間,activity位於前台最上面並與用戶進行交互。activity會經常在暫停和恢復之間進行狀態轉換──比如說當設備轉入休眠狀態或有新的activity啟動時,將調用onPause() 方法。當activity獲得結果或者接收到新的intent的時候會調用onResume() 方法。因此,在這兩個方法中的代碼應當是輕量級的。

下圖展示了上述循環過程以及activity在這個過程之中歷經的狀態改變。著色的橢圓是activity可以經歷的主要狀態。矩形框代表了當activity在狀態間發生改變的時候,你進行操作所要實現的回調方法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved