首页 > 解决方案 > Oreo:JobService 不需要 startForeground 吗?

问题描述

作为测试,我从我们拥有的工作服务中删除了“startForeground(通知)”,它似乎仍在工作。

我们是否不需要在 Android O 及更高版本上发布工作服务的前台通知?

我无法找到这方面的具体文档。
任何参考都会很棒。

太感谢了

编辑

对于那些有同样问题的人,我已经在生产环境中测试了几天。我们的应用程序有一个持续的通知,我一直在从作业服务启动/更新它而没有调用 startForeground 并且在 crashlytics 中没有看到任何安全异常。我有信心说:

对于短期运行的任务,您不需要从作业服务调用 startForeground(异常很可能适用于正在进行的任务。我的代码只是进行 api 调用并更新通知视图)

感谢 0X0nosugar 和 WasabiTea

标签: android

解决方案


为了降低出现这些问题的可能性,Android 8.0 对应用程序在用户不直接与其交互时可以执行的操作进行了限制。应用程序受到两种方式的限制:

  • 后台服务限制:当应用程序处于空闲状态时,它对后台服务的使用受到限制。这不适用于前台服务,这些服务对用户来说更明显。

  • 广播限制:除了有限的例外,应用程序不能使用它们的清单来注册隐式广播。他们仍然可以在运行时注册这些广播,并且他们可以使用清单来注册专门针对他们的应用程序的显式广播。

在大多数情况下,应用程序可以通过使用 JobScheduler 作业来解决这些限制。这种方法让应用程序在应用程序未主动运行时安排执行工作,但仍为系统提供了以不影响用户体验的方式安排这些工作的余地。Android 8.0 对 JobScheduler 进行了多项改进,可以更轻松地用预定作业替换服务和广播接收器;有关详细信息,请参阅 JobScheduler 改进。

原始文档在这里 - https://developer.android.com/about/versions/oreo/background

希望这可以帮到你


推荐阅读