在我目前为一家公司申请的应用中,我有一个前台服务,在工人值班(登录到应用程序)时运行。重要的是要保持该前台服务在用户登录时运行。为了从这个前台服务被意外杀死的情况中恢复(用户任务意外滑动或系统杀死),我使用了具有 Jobscheduler 的定期 JOB,以便在关闭时重新激活 ForegroundService。这种技术在 Android 8 OREO 之前很有效。START_STICKY 和其他技术单独使用对我来说并没有起作用。
在 Android 8 中,一旦前台服务被杀死,定期作业也会被杀死。我在 logcat 中收到通知,说明该作业不允许运行。据我所知,即使应用程序在后台或已关闭,作业也应该能够运行。它在预先 OREO 设备上的工作方式就是应该的。
据我所知,我可以通过在应用程序设置中启用“自动启动”选项来解决这个问题。但由于没有办法知道员工是否打开了它,因此这也不是一种可靠的方法。
所以我的问题是: - 为什么作业调度程序在 Android 8 中停止按照应该的方式工作? - 是否有其他可靠的技术可以让我的 ForegroundService 在 ANDROID OREO 中从关闭中恢复?
在 Android 8 中,一旦前台服务被杀死,定期作业也会被杀死。我在 logcat 中收到通知,说明该作业不允许运行。据我所知,即使应用程序在后台或已关闭,作业也应该能够运行。它在预先 OREO 设备上的工作方式就是应该的。
据我所知,我可以通过在应用程序设置中启用“自动启动”选项来解决这个问题。但由于没有办法知道员工是否打开了它,因此这也不是一种可靠的方法。
所以我的问题是: - 为什么作业调度程序在 Android 8 中停止按照应该的方式工作? - 是否有其他可靠的技术可以让我的 ForegroundService 在 ANDROID OREO 中从关闭中恢复?
我已经阅读了 https://medium.com/exploring-android/exploring-background-execution-limits-on-android-oreo-ab384762a66c 但那并没有回答我的问题。
非常感谢。