是否可以创建在Oreo后置设备上运行的Alarm应用程序

问题描述

过去,我们有警报管理器意图服务隐式广播接收器,即使应用不在后台,它们也可以运行。

但是今天( post oreo )我们有Work ManagerJob Schedulers。当应用程序不在后台时,它们会为我们完成工作,但不能保证确切的执行时间。

因此,今天如果我需要创建一个应用程序,用户可以在其中设置一个警报,该警报将在5:00 am 27 September 2021处触发。 (出于明显原因跳过2020 ;))

有人尝试过创建警报应用后oreo操作系统,我知道Gmail和其他系统都可以这样做,但是据我所知,他们具有执行操作的特殊权限,而其他应用则不允许。

解决方法

AlarmManager仍可在现代Android设备上使用。 API文档中有关于严格计划保证的说明:

注意:从API 19(Build.VERSION_CODES.KITKAT)开始,警报传递是不精确的:操作系统将转移警报,以最大程度地减少唤醒和电池消耗。有新的API支持需要严格交付保证的应用程序。请参阅setWindow(int,long,android.app.PendingIntent)setExact(int,android.app.PendingIntent)。 targetSdkVersion早于API 19的应用程序将继续看到以前的行为,在该行为中,所有警报均在请求时准确地传递。

因此,如果您想设置确切的唤醒时间,则可以在API级别19和更高级别上使用setExact()

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...