1. 程式人生 > >activity的四種狀態說明

activity的四種狀態說明

一、Activity主要的四種狀態:

     Running(執行):在螢幕前臺(位於當前任務堆疊的頂部)

     Paused(暫停):失去焦點但仍然對使用者可見(覆蓋Activity可能是透明或未完全遮擋)

     Stopped(停止):完全被另一個Activity覆蓋

          Destroyed(銷燬):退出,完全銷燬

二、事件方法鏈

    2.1  進入Activity

      onCreate  -> onStart  ->  onResume

    2.2  BACK鍵

      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

三、與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。