Android - Activity生命週期

  1、說明android

2012-2-2_1.png

    Activity主要的三種狀態:網絡

      Running(運行):在屏幕前臺(位於當前任務堆棧的頂部)優化

      Paused(暫停):失去焦點但仍然對用戶可見(覆蓋Activity多是透明或未徹底遮擋).net

      Stopped(中止):徹底被另外一個Activity覆蓋blog

 

  2、事件方法鏈生命週期

    2.1  進入Activity事件

      onCreate  -> onStart  ->  onResume內存

    2.2  BACK鍵ci

      onPause -> onStop -> onDestroy資源

    2.3  HOME鍵
      Home鍵退出:onPause -> onStop
      Home鍵回來:onRestart ->  onStart -> onResume  

    2.4  休眠/恢復

      休眠:  onPause

      恢復:  onResume

    2.5  旋轉屏幕

      未設置android:configChanges:

        onPause  ->  onStop  ->  onDestory  ->  onCreate  -> onStart  ->  onResume

      設置了android:configChanges="orientation|keyboardHidden":

          不會觸發生命週期方法,參見文章這裏

    2.6  來電

      來電,顯示來電界面:

        onPause  ->  onStop

      關閉電話界面,從新回到當前Activity:

        onRestart ->  onStart -> onResume

    2.7  其餘Activity

      進入下一個Activity:

        onPause  ->  onStop

      從其餘Activity返回至當前Acitivity:

        onRestart ->  onStart -> onResume

 

  3、與Activity生命週期結合的應用場景

    3.1  與廣播(Broadcast)結合

      在onResume註冊廣播(registerLinstener),在onPause註銷廣播(unregisterLinstener)。 例如:

      作"搖一搖"功能(傳感器)、監聽網絡變化,就能夠在onResume中註冊監聽,在onPause裏註銷掉,已節省資源提升效率。

    3.2  與服務(Service)結合

      在onStart綁定服務(bindService),在onStop中取消綁定(unbindService)。 例如:

      須要經過Service定時更新UI上的數據,而Activity的可見週期在onStart與onStop之間,那麼就能夠再onStart時啓動服務,在onStop時中止服務。爲了節約系統資源,除了提升用戶體驗之外,開發人員應儘量的優化程序。

    3.3  與Cursor結合

      使用managedQuery讓Activity幫你管理Cursor的生命週期,不用本身去close。但也有一些問題,補充兩篇文章:這裏1、 這裏2

    3.4  釋放資源

      能夠在onDestory中釋放一些資源。好比能夠在onDestory時調用MediaPlayer的release。

 

  4、注意

    4.1  全部Activity生命週期方法的實現都必須先調用其父類版本。

    4.2  因爲Activity常常會暫停和恢復之間切換,因此onResume和onPause這兩個方法應當是輕量級的。

    4.3  在系統再某種緊急狀況下須要回收內存,onStop、onDestory可能不會被調用,所以須要在onPause中把須要長期保存的數據保存起來。

相關文章
相關標籤/搜索