我想在设备重新启动后立即重新安排应用程序的警报*。对于此过程,我向本地数据库进行查询以获取警报详细信息,然后将其设置为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
方法中,使用 JobIntentService
或 ForegroundService
将警报调度工作委托给后台线程