編輯:安卓省電與加速
在進程存活的期間有效使用, Google官方推薦使用。
利用系統層級的鬧鐘服務(持有Wake lock)。
如果需要精確的定時任務,這個是最佳選擇。
JobScheduler官方文檔
建議網絡相關任務放到Job Scheduler。
系統重啟以後,任務會依然保留在Job Scheduler當中。
只有在Api21或以上的系統支持
由於是將多個任務打包在一個場景下執行,因此執行有略微的延後;並且有期限,如果在期限內還沒有滿足特定情況,系統會將這些任務加入隊列,並且隨後會進行執行。
boolean onStartJob(JobParams params) { // 開始執行 // 注意這個方法是在主線程執行的,如果是耗時操作請拋到獨立線程中 // jobFinished(JobParameters params) // 在完成任務並且決定是否還需要定時執行更多任務 // return 是否是在獨立現在還有事務要執行 } void onStopJob(){ // 用於清理數據,在結束任務後被回調。 }
GCM Netwrok Manager實際上在 Api 21 或以上也是使用了 Job Scheduler,在此之前的版本使用的是Google Play Service中實現Job Scheduler的功能。
在GCMNetworkManager中有很多利於省點的規則。
OneoffTask.Builder()
與PeriodicTask.Builder()
創建任務。GcmTaskService#onRunTask(TaskParams params)
是在後台線程執行的。觸發場景與JobInfo中的一樣。
Transferring Data Using Sync Adapters
- 通常是用於同步較多的數據。
- 也許這是Job Scheduler API 21前比較好的替代品。
同步服務端與本地設備中的數據。
盡可能的打包所有需要同步的任務在一個周期中執行,以此來進行盡可能的節省手機電量。
API 23中直接稱其為Doze Mode。
無論Target SDK是多少,只要設備是Android API 23或以上會啟用該模式。
通過移動窗口打包任務請求,並且間隔時間會越來越久。
會同時滿足以下情況過後一段時間(大約30分鐘)以後生效:
退出條件是,進入條件中任意條件狀態發生變化。
WAKE-LOCK
API 24 或以上會啟用該模式
會同事滿足以下情況後一段時間(大約幾分鐘)以後生效:
或者在以下的條件:
以下所有情況,Google官方都建議不在特殊情景,不要去使用,由於中斷了省電的規則。
setAndAllowWhileIdle()
、setExactAndAllowWhileIdle()
。但是在非窗口期間並不解除無網絡訪問的限制,並且只有10s的時間給予處理。AlarmManager.setAlarmClock()
的事件會在鬧鐘結束前,令系統短暫的完全退出Doze模式,並且正常處理事件,系統為了突顯該鬧鐘事件,將會在status bar上顯示物理鬧鐘的icon。(Firebase Cloud Messaging,舊版中稱為Google Cloud Messaging(GCM))。
FCM/GCM中高優先級的任務配置中("priority" : "high"
) 的消息,在Doze模式下可以正常及時到達。
白名單官方文檔
官方建議可考慮加入白名單的情況
isIgnoringBatteryOptimizations()
來獲知是否在白名單中;白名單的請求方式:
前台服務(foreground-service)將不會受到Doze模式影響。
Google官方提供了一些adb命令用於測試Doze模式,而非需要通過等待來進入Doze模式的。
adb shell dumpsys battery unplug
命令讓設備進入未連接充電的模式。adb shell dumpsys deviceidle step [light|deep]
強行進入Doze模式。退出Doze模式,讓手機恢復正常需要復位充電模式:
adb shell dumpsys battery reset
。
adb shell dumpsys deviceidle get [light|deep|force|screen|charging|network]
。在Android Nougat Developer Preview 4中,Doze模式的狀態周期是:
Light: ACTIVE -> IDLE -> IDLE_MAINTENANCE -> OVERRIDE Deep: ACTIVE -> IDLE_PENDING -> SENSING -> LOCATING -> IDLE -> IDLE_MAINTENANCE
© 2012 – 2016, Jacksgong(blog.dreamtobe.cn). Licensed under the Creative Commons Attribution-NonCommercial 3.0 license (This license lets others remix, tweak, and build upon a work non-commercially, and although their new works must also acknowledge the original author and be non-commercial, they don’t have to license their derivative works on the same terms). http://creativecommons.org/licenses/by-nc/3.0/
手機越來越卡這種情況相信很多人都碰到過,甚至有些人在新買手機不久後就會察覺到這種情況,剛買手機是打開各個程序幾乎都是瞬間開啟,而現在點擊圖標後還要等上半秒或一
Nexus5省電技巧合集 1、關閉原生的自動屏幕亮度調節。默認自動調節的N5屏幕有點太亮了,尤其是在光線比較暗的時候,比較刺眼而且還耗電。關閉之後,你可
努比亞Z7 Mini手機省電模式如何開啟呢?手續電池的續航問題一直制約著手機的使用,那麼這手機的省電模式就很重要了
手機電量不夠用想必是現在很多智能手機用戶們都比較頭疼的一個問題,而如今在續航方面,不少廠商們也在這方面做出了很大的努力,比如高容量電池、快充技術等。大家都知道OPPO R