在设备重新启动Android Oreo时立即重新安排警报



我想在设备重新启动后立即重新安排应用程序的警报*。对于此过程,我向本地数据库进行查询以获取警报详细信息,然后将其设置为AlarmManager。这些操作必须在后台线程中执行。所以我尝试了以下方法:

1(我将上面的代码放在一个JobIntentService中并调用enqueueWork()但显然工作没有立即执行。

2(我将上面的代码放在一个Service(在AsyncTask中(并调用startForegroundService。这似乎有效,但这不是使用基于 Android 文档的前台服务的正确情况。

3( 创建计划作业并设置setMinimumLatency(0)以便立即执行代码。

您认为哪种是立即安排警报的最正确方法?您还有其他建议吗?

*在ACTION_BOOT_COMPLETED行动的BroadcastReceiver onReceive()

作为 Android 8.0(API 级别 26(后台执行限制的一部分, 以 API 级别 26 或更高级别为目标的应用无法再注册 在其清单中用于隐式广播的广播接收器。

但幸运的是,ACTION_BOOT_COMPLETED不受上述规则的约束。

因此,您可以使用ACTION_BOOT_COMPLETED操作定义BroadcastReceiver,然后在onReceive方法中,使用 JobIntentServiceForegroundService 将警报调度工作委托给后台线程

最新更新