在我当前的公司应用程序中,我有一个 ForegroundService 在工作人员值类(登录到应用程序)时运行。 在用户登录时保持该前台服务运行很重要。为了从该前台服务以某种方式被终止(用户任务意外滑动或系统终止)的情况中恢复,我使用 Jobscheduler 实现了一个定期的 JOB,它在它被获取时重新激活 ForegroundService关闭。此技术在 Android 8 OREO 之前运行良好。 START_STICKY 和其他技术本身并不能解决问题。
在 Android 8 中,一旦前台服务被终止,周期性作业也会被终止。我在 logcat 中收到不允许作业运行的通知。据我了解,即使应用程序处于后台或被杀死,乔布斯也应该能够运行。并且它以应有的方式在奥利奥之前的设备上工作。
据我所知,我可以通过在应用程序设置中启用“自动启动”选项来解决这个问题。但由于无法知道员工是否打开了它,因此这也不是一件可靠的事情。
所以我的问题: - 为什么作业调度程序在 Android 8 中停止工作? - 有没有其他可靠的技术可以让我的 ForegroundService 从 ANDROID OREO 的关闭中恢复?
我读过 https://medium.com/exploring-android/exploring-background-execution-limits-on-android-oreo-ab384762a66c但这并没有回答我的问题
非常感谢
最佳答案
你试过吗
.setPersisted(true)
注意:需要 RECEIVE_BOOT_COMPLETED 权限。
你也可以看到这个问题。
关于android - JobScheduler Android Oreo 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51983002/