activity 暫停與恢復

暫停Activity

當系統調用activity中的onPause(),從技術上講,意味着activity仍然處於部分可見的狀態.但更多時候意味着用戶正在離開這個activity,並馬上會進入Stopped state. 通常應該在onPause()回調方法裏面做以下事情:

  • 停止動畫或者是其他正在運行的操作,那些都會導致CPU的浪費.
  • 提交在用戶離開時期待保存的內容(例如郵件草稿).
  • 釋放系統資源,例如broadcast receivers, sensors (比如GPS), 或者是其他任何會影響到電量的資源。

例如, 如果程序使用Camera,onPause()會是一個比較好的地方去做那些釋放資源的操作。

@Override
public void onPause() {
    super.onPause();  // Always call the superclass method first

    // Release the Camera because we don't need it when paused
    // and other activities might need to use it.
    if (mCamera != null) {
        mCamera.release()
        mCamera = null;
    }
}

通常,不應該使用onPause()來保存用戶改變的數據 (例如填入表格中的個人信息) 到永久存儲(File或者DB)上。僅僅當確認用戶期待那些改變能夠被自動保存的時候(例如正在撰寫郵件草稿),才把那些數據存到永久存儲 。但是,我們應該避免在onPause()時執行CPU-intensive 的工作,例如寫數據到DB,因爲它會導致切換到下一個activity變得緩慢(應該把那些heavy-load的工作放到onStop()去做)。

如果activity實際上是要被Stop,那麼我們應該爲了切換的順暢而減少在OnPause()方法裏面的工作量。

Note:當activity處於暫停狀態,Activity實例是駐留在內存中的,並且在activity 恢復的時候重新調用



恢復Activity

當用戶從Paused狀態恢復activity時,系統會調用onResume()方法。

這裏一般是初始化在onpause()中釋放的資源或者是控件,或者動畫




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章