Android Oreo服务限制会影响作业调度程序的intentservices吗?

Le2*_*410 2 android android-intentservice android-jobscheduler android-8.0-oreo

随着Oreo中引入的新后台服务限制,我很难找到一个地方来澄清在后台运行应用程序时是否仍然可以从JobScheduler启动IntentServices。

我有一个基于地理围栏的非常重要的功能,该功能需要在篱笆断开后运行intentService。我花了很长时间设置它,以便在篱笆破损且应用程序处于“牛轧糖”的“打for”状态时排队等待工作。当重新打开网络连接窗口时,作业最终由操作系统运行时,我在intentService中一个接一个地剥离每个作业。从技术上来说,当应用程序不在前台时正在启动服务,或者由于使用JobScheduler而仍然允许这样做时,我现在可以不再执行此操作吗?

cta*_*ate 5

您不应该假设您的应用程序能够从工作中启动服务。特别是,应用执行作业时,它们通常仍处于后台状态,startService()而在后台状态下调用将引发异常。当然,打电话总是合法的startForegroundService()。尽管这显然也具有UI含义。

JobIntentService明确旨在以与Android O +背景限制兼容的方式替换IntentService。您应该考虑切换到该类,而不是使用旧的IntentService支持类。