Android 8.0 AlarmManager 後臺定時任務
阿新 • • 發佈:2018-05-05
blank 也有 情況 pre ati ng- TP 問題 manage
以前在Android 4.0時,alarmManager 沒什麽問題。後來android為了優化系統耗電情況,引入了doze模式,參見此頁
https://developer.android.com/training/monitoring-device-state/doze-standby
簡單地說,系統會長時間待機後,會自動進入doze模式,這種模式裏,alarmManager啥的都不好用了,系統會自動從doze模式轉出來一小段時間,把剛在在doze裏被忽略的事件(比如說alarmManager)執行。這樣一來,alarmManager根本無法定時調用了。
其實,對於每個應用,這個模式是可以配置的,一般在 Settings > Battery > Battery Optimization,也可以用代碼打開設置頁面,讓用戶設置,下面是一段別人寫的代碼:
Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:user.zhuku.com")); startActivity(intent);
華為手表,在wear os 2.0上,也有類似的選項。
Android 8.0 AlarmManager 後臺定時任務