Android 奥利奥时间敏感后台工作

Android Oreo time sensitive background work

在将我的需要进行时间敏感的后台工作的应用程序迁移到 Oreo 时,我按照迁移指南遇到了问题:

Pre Oreo 我使用由 Alarmmanager.setAndAllowWhileIdle 启动的服务将我的工作安排在预定时间的几分钟内总是 运行。现在,有了奥利奥,我不再被允许在后台启动服务。就我的红色而言,建议是尽可能用广播接收器替换服务或使用预定作业。

我无法使用广播接收器,因为在极少数情况下,我想在后台执行的工作可能需要超过 10 秒的时间。

我也不认为我可以使用预定作业,因为如果设备处于打瞌睡模式,则无法保证 运行 在预定时间内完成几分钟。

因为我的应用程序当时 运行 服务非常重要,所以要收集一些与重新记录时间相关的数据,我需要一种方法来完成该任务奥利奥背景限制。

Now, with Oreo, i am no longer allowed to start a service in the background

当然是。使用 startForegroundService()getForegroundService() 作为 PendingIntent。让那些指向前景 Service,在那里你通过 startForeground().

显示 Notification