Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android開發——Activity(活動)的生命周期(下)

Android開發——Activity(活動)的生命周期(下)

編輯:Android開發實例

接上文:《Android開發——Activity(活動)的生命周期(上)》

四、監聽活動狀態變化

為了確保對活動狀態變化作出正確的響應,Android提供一個系列的事件控制器,監聽活動的在整個生命周期的狀態變化。活動的生命周期進一步細化,可以分為:全周期(Full Lifetime)>可視期(Visible Lifetime)>激活期(Active Lifetime),如下圖所示:

圖1 活動的生命周期

如上圖所示,Activity狀態的改變都會觸發對應的方法。

Full Lifetime 全周期介於調用 onCreate 與 onDestroy 之間。在一些情況下,終止一個活動並不調用 onDestroy 。Activity通過調用 onCreate 來初始化用戶界面,數據,啟動服務以及線程。onCreate 方法有個Bundle對象參數,這個參數含有最後一次調用 onSaveIntanceState 保存的UI狀態數據。我們可以在 onCreate 中利用這個參數來恢復UI狀態數據,或者重寫 onRestoreInstanceState 。重寫 onDestroy 釋放資源,關閉數據庫等操作。

為了寫出比較高效的代碼,有個比較好的建議是避免創建短期對象。快速的創建和銷毀對象容易增加碎片回收線程的壓力,這樣會直接影響用戶體驗。

Visible Lifetime 可視期介於調用 onStart 與 onStop 之間。此時Activity是可見的,但是不能響應用戶事件。一個Activity在其生命周期中是有可能經歷多個可視期的。在非常極端的情況下,系統也有可能終止一個處於可視期的活動,這種情況很少見。onStop 方法通常用於暫時或者停止那些用來更新UI的動畫,線程,定時器,服務等,所以當活動不可見的時占用的系統資源是很少的。當活動由不可見狀態轉化為可見狀態時,在 onStart 中再啟動相關的線程和服務。onStart 和 onStop 同樣也用來注冊和取消注冊(unregister)那些用來更新UI的廣播接收者。在活動不可見時我們需要取消注冊接受者(Receivers),特別是那些支持目的動作(Intent)以及更新UI的接收者。

Activity Lifetime 當活動的 onResume 被調用,活動進入激活期;當 onPause 被調用時,激活期結束。一個活動被激活,它將處於前景屏幕,同時響應用戶的事件。同樣在活動的生命周期結束之前,存在多個激活期,一旦有新的活動被激活,當前活動將會失去焦點(暫停甚至停止……)。激活期是活動生命周期比較活躍的部分,會頻繁調用 onResume 和 onPause ,所以為了有良好的用戶體驗,在 onResume 和 onPause 方法中的代碼需要有更高的效率。

在調用 onPause 之前,活動會調用 onSaveInstanceState 來保存活動的UI狀態到 Bundle ,這個 Bundle 就是 onCreate 和 onRestoreInstanceState 這兩個方法的參數了。onSaveInstanceState 保存UI狀態(比如多選按鈕的狀態,界面焦點=),這樣當活動被重新激活時,能夠正確顯示被暫停前的UI。多數的活動都重寫 onPause 方法來提交未保存的數據,我們也可以在此選擇是否暫停線程,廣播接收者,這完全依軟件架構本身而定。在 onResume 中一般不執行太多的代碼,創建UI一般在 onCreate 或者 onRestoreInstanceState 中實現。

五、Android中的Activity類(1.5版本的sdk)

  • MapActivity Google Map的活動類
  • ListActivity 列表活動類
  • ExpandableListActivity 支持多級列表的活動
  • ActivityGroup 支持在一個屏幕插入多個活動

轉自:http://www.cnblogs.com/halzhang/archive/2010/05/31/1748197.html

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