編輯: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在狀態間發生改變的時候,你進行操作所要實現的回調方法。
Activity生命周期:一個activity主要有三個狀態:當在屏幕前台時(位於當前任務堆棧的頂部),它是活躍或運行的狀態。它就是相應用戶操作的activity。當它失
Android 應用程序的安裝和卸載事件,是由系統進行監聽並全局廣播的,支 持1.5(android 3)以上因此,如果想要監聽獲取應用的安裝和卸載事 件,只需要自定義一
在Android簡明開發教程三:第一個應用Hello World 已經介紹了Hello world示例,這兩個Hello world 的Layout定義稍有 不同:<
1.1.1 VSync信號的處理經過上一小節的分析,現在我們已經明白了系統是如何通過硬件設備或者軟件模擬來產生VSync信號的,也明白了它的流轉過程。VSync最終會被E