千金一刻莫空度,老大无成空自伤。这篇文章主要讲述Android 8.0 AlarmManager 后台定时任务相关的知识,希望能为你提供帮助。
以前在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);
【Android 8.0 AlarmManager 后台定时任务】华为手表,在wear os 2.0上,也有类似的选项。
推荐阅读
- Window Application has "update" key words
- Android代码混淆
- 如何让你的应用程序在App Store中脱颖而出
- NetAppSnapDrive安装过程中遇到的一些报错
- Perl chop()和chomp()
- PDFBox处理元数据
- 带循环的Perl数组
- Perl数组用法详解
- PDFBox使用附件