什麼是 Activity
Activity 就是佈滿整個窗口或者懸浮於其餘窗口上的交互界面。在一個應用程序中一般由多個 Activity 構成,都會在 AndroidManifest.xml 中指定一個主的 Activity,以下設置android
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
當程序第一次運行時用戶就會看這個 Activity,這個 Activity 能夠經過啓動其餘的 Activity 進行相關操做。當啓動其餘的 Activity 時這個當前的這個 Activity 將會中止,新的 Activity 將會壓入棧中,同時獲取用戶焦點,這時就可在這個 Activity 上操做了。都知道棧是先進後出的原則,那麼當用戶按 Back 鍵時,當前的這個 Activity 銷燬,前一個 Activity 從新恢復。動畫
Activity 狀態
- 運行狀態: 處於運行狀態的活動,是擺在用戶面前的活動。此時這個活動處於可交互的狀態,可以響應用戶的觸摸操做。這時,活動在返回棧的位置就是棧頂。
- 暫停狀態: 用戶可見的、卻不可交互的活動,就處於暫停狀態。例如此時的棧頂是一個對話框形式的活動,因爲它只會佔用屏幕中間的部分區域,因此底下那個活動就是可見的。此時的活動是不可交互的,換言之,對用戶的觸摸點擊"沒有反應」。此時,活動不在棧頂了。
- 中止狀態: 用戶對活動徹底不可見的時候,活動就進入了中止狀態。活動需由暫停狀態進入中止狀態。不少時候是新的活動徹底覆蓋了原活動,用戶感受到了」頁面的切換",那麼該活動從運行態,中間暫停態幾乎不停留,進入到中止態。
- 銷燬狀態: 當一個活動從返回棧中移除後就變成了銷燬狀態。
Activity 生命週期
- onCreate():當 activity 第一次建立時會被調用。在這個方法中你須要完成全部的正常靜態設置 ,好比建立一個視圖、綁定列表的數據等等。若是能捕獲到 activity 狀態的話,這個方法傳遞進來的 Bundle 對象將存放了 activity 當前的狀態。調用該方法後通常會調用 onStart() 方法。
- onStart():當 activity 對於用戶可見前即調用這個方法。若是 activity回到前臺則接着調用 onResume() ,若是 activity 隱藏則調用onStop()。
- onResume():在 activity 開始與用戶交互前調用該方法。在這時該activity 處於 activity 棧的頂部,而且接受用戶的輸入。其後續會調用 onPause() 方法。
- onPause():在系統準備開始恢復其它 activity 時會調用該方法。這個方法中一般用來提交一些還沒保存的更改到持久數據中,中止一些動畫或其它一些耗 CPU 的操做等等不管在該方法裏面進行任何操做,都須要較快速完成,由於若是它不返回的話,下一個 activity 將沒法恢復出來。若是 activity 返回到前臺將會調用 onResume() ,若是 activity 變得對用戶不可見了將會調用onStop() 。
- onStop():在 activity 對用戶不可見時將調用該方法。可能會由於當前 activity 正在被銷燬,或另外一個 activity (已經存在的activity 或新的 activity )已經恢復了正準備覆蓋它,而調用該方法。若是 activity 正準備返回與用戶交互時後續會調用onRestart ,若是 activity 正在被釋放則會調用 onDestroy 。
- onDestroy():在 activity 被銷燬前會調用該方法。這是 activity 能接收到的最後一個調用。可能會由於有人調用了 finish 方法使得當前activity 正在關閉,或系統爲了保護內存臨時釋放這個 activity的實例,而調用該方法。你能夠用 isFinishing 方法來區分這兩種不一樣的狀況。
- onRestart():在 activity 被中止後從新啓動時會調用該方法。其後續會調用 onStart 方法。