日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity

發布時間:2024/7/5 Android 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/pausing.html

在APP的正常使用過程中,在前臺工作的Activity有時可能會被其他的可視化組件擋住,而引起Activity進入Paused狀態。舉個例子,當一個半透明的Activity打開后(類似于Dialog那種風格),那么原先的那個Activity便會進入Paused狀態。只要Activity仍然只是部分可見,并且它沒有獲得焦點,那么它就一直保持在Paused狀態。

然而,只要activity一旦被全部擋住,并且不可見,那么就會進入Stopped狀態。

在系統調用Activity的onPause方法時,activity隨之就進入了paused狀態,這期間允許你停止一些不應該繼續進行的活動(比如視頻),還應該對用戶的任何信息做持久化存儲,萬一用戶退出了APP。如果用戶從Paused狀態返回了Activity,系統會調用onResumed方法并回到Resumed狀態。

Note:當Activity的onPause方法被調用,這意味著Activity可能會在Paused狀態待一會,并且稍后用戶可能會再次返回到這個Activity中。無論如何,這通常是用戶離開Activity的第一個信號。


上圖:當一個半透明的Activity擋住了原先的Activity,系統會調用onPause方法,然后Activity會等在Paused狀態(1),如果在Paused狀態返回了Activity,那么系統會調用onResume方法(2)。

暫停Activity

當系統調用了onPause方法,這從技術上說activity當前是部分可見狀態,但是大多數情況下,這表示用戶離開了Activity,并且稍后會進入Stopped狀態。你應該一般使用onPause方法做這些事情:

  • 停止動畫或者運行中的活動等這類消耗CPU資源的行為。
  • 保存沒有存儲的改變,但這僅限于用戶希望保存的東西(比如電子郵件的草稿)。
  • 釋放系統資源,比如廣播接收器,正在處理中的傳感器(比如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方法來持久化存儲用戶的改變(比如輸入表格的用戶信息)。唯一的一點就是用戶希望這些數據可以自動的存儲(比如起草的email)。然而,應該避免在onPause方法中執行高強度的CPU工作,比如寫入數據庫,因為它會減慢切換到下一個Activity的速度(你應該在onStop方法中做這些重量級操作)。

你應該在onPause方法中保持相對簡單的完成操作,為了可以快速過渡到下個Activity。

Note:如果activity在Paused狀態,那么activity會常駐在內存中,它會在activity恢復的時候重新被調用。你不需要重新初始化這些在任何回調函數中被重新創建的組件。

恢復Activity

如果用戶從Paused狀態恢復到了Resumed狀態,系統會調用onResume方法。

應該意識到系統每次調用這個方法activity就進入了前臺,包括在第一次創建的時候。因此,你應該在onResume中實例化組件,然后在onPause中釋放這些組件,每次在activity進入resumed狀態的時候執行其必須的初始化操作(比如啟動動畫和activity獲取到焦點之后只實例化要使用的組件)。

下面這個onPause的例子是上面onResume例子的副本,所以應該在activity暫停的時候釋放初始化過的camera對象。

@Override public void onResume() {super.onResume(); // Always call the superclass method first// Get the Camera instance as the activity achieves full user focusif (mCamera == null) {initializeCamera(); // Local method to handle camera init} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。