[英]Testing doze and standby mode
我關閉了運行Android M的Nexus 5設備的屏幕顯示,然后發出以下命令。
im17-x0:~ r.j$ adb shell dumpsys battery unplug
im17-x0:~ r.j$ adb shell dumpsys deviceidle step
Stepped to: IDLE_PENDING
im17-x0:~ r.a$ adb shell dumpsys deviceidle step
Stepped to: SENSING
im17-x0:~ r.a$ adb shell dumpsys deviceidle step
Stepped to: IDLE
理想情況下,我的設備應該進入空閑模式。 但我在將它置於空閑模式並且仍在運行之前啟動了CountDownTimer
。 網絡訪問仍然在我的手機中(使用此功能檢查)
為什么設備不進入打盹模式? 從這里選擇備用模式的選項也具有相同的效果。 為什么?
同樣在該計時器中,如果我檢查isDeviceIdleMode()
,它返回true。
我在這里有一些提示:
網絡訪問
我建議通過實際嘗試網絡呼叫並將其注銷來測試網絡訪問。 在空閑模式下,以編程方式檢查網絡訪問存在文檔錯誤:
https://code.google.com/p/android-developer-preview/issues/detail?id=3164
檢查空閑/打盹模式
沒有太多的文檔,但是有一些方法沒有被Doze模式靜音。 使用CountDownTimer
可能就是其中之一。 我嘗試使用setExact()設置警報,當應用程序處於空閑模式時,已記錄該警報不起作用 。 如果您可以在該警報觸發時記錄某些內容,那么您肯定不會處於空閑模式。
讓我知道這對你有用嗎!
我認為在打瞌睡時網絡仍然會連接回來(如果你有網絡連接),但是如果你嘗試做除GCM以外的任何事情,它會給你一個錯誤。
REWRITE:我的原始答案假設您的設備實際上不處於打盹模式,因此鏈接到改進的進入Doze模式的指令和Diving Into IDLE_MAINTENANCE
關於允許網絡活動運行的IDLE_MAINTENANCE
狀態。
我的新的假設是:(1)當deviceidle step
回復Stepped to: IDLE
時,設備處於打盹模式,和我們預期(2)打盹模式不行為。
谷歌已經更新了針對Doze和App Standby的優化頁面,但它並沒有與你的發現相吻合。 他們提供了有關了解打盹模式對您的應用意味着什么的更多信息,以及后台工作,鬧鍾和Android應用的流程圖 。 另見問題2225 。
我擔心這仍然不能解釋你的結果。 打盹模式很復雜,記錄不足。
問:您的應用是否已列入白名單? Doze和App Standby頁面的優化說:
白名單中的應用可以使用網絡並在Doze和App Standby期間保留部分喚醒鎖定。
BTW,命令
adb shell dumpsys deviceidle
顯示當前狀態(例如IDLE
)和其他信息,包括充電,動作和屏幕開/關狀態,這些是打盹的先決條件,也是白名單 。 這對調試很有用。
以下是有關空閑模式的一些有用信息:
deviceidle - 是一個新的Android服務,它將始終運行並偵聽多個系統事件,這些事件可以在空閑模式(也稱為打盹模式)中觸發/退出:
1.Screen on/off
2.Charging status
3.Significant motion detect
DeviceIdleController - 當設備處於喚醒和使用狀態時,控制器處於ACTIVE狀態。 外部事件,如不活動超時,用戶關閉屏幕,運動檢測......將驅動狀態機進入INACTIVE狀態。 此狀態機包含七種狀態:
1.ACTIVE - Device is in use, or connected to a charge source.
2.INACTIVE - Device has recently come out of the active state, meaning that user turned off the display or unplugged it.
3.IDLE_PENDING - Hold on, we are about to enter idle mode.
4.SENSING
5.LOCATING
6.IDLE - Device is idle.
7.IDLE_MAINTENANCE - Window is open for applications to do processing. Then will back to IDLE.
空閑狀態 - 為了使設備進入空閑狀態,您可以使用以下adb命令:
>adb shell dumpsys battery unplug
>adb shell dumpsys deviceidle force-idle
活動狀態 - 為了使設備恢復活動狀態,您可以模擬以下關鍵事件:
> adb shell input keyevent KEYCODE_WAKEUP
我還需要一個快速選項來在Active和Idle狀態之間切換,所以我為這些目的寫了一個批處理腳本adbIdleModeSwitch.bat ,你可以下載並使用它: https : //drive.google.com/file/d/0B81qFnPX_eUUYTMxOTd1UG94NVk/view
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.