在Android的前台启动JobService



我使用com.firebase.jobdispatcher.JobService来同步数据,我通过使用FirebaseJobDispatcher调度Job来启动它。

问题:我不喜欢第一次启动应用程序时出现延迟。

有没有一种方法可以让我在第一次使用时在Android O上启动该服务,作为前台服务(带有通知)?(而不是将其安排为作业)

我试过了:

ContextCompat.startForegroundService(context, intent);

但这并不调用CCD_ 4的onCreate。

结论:使用两个服务。

com.firebase.jobdispatcher.JobService无法在前台启动。

正常的Service不能作为预定的Job启动。

我创建了两个服务类,它们都启动相同的同步流:fixed。

我建议您使用Oreo中引入的新JobIntentService,而不是FirebaseJobDispatcher。然后,你可以从应用程序的前台启动后台服务(现在不允许在后台创建后台服务,在你必须显示通知之前,你只有5秒钟的时间来做一些事情)。有了JobIntentService,你就没有这些限制了。

如果你不想同步,也不必显示同步通知。但如果你真的需要这样做,可以在JobIntentService的onHandleWork()方法中进行。

本文很好地解释了奥利奥中新的后台执行限制:

https://medium.com/til-kotlin/jobintentservice-for-background-processing-on-android-o-39535460e060

JobIntentService非常易于使用,可以解决您在新的背景限制下可能面临的任何问题。将Oreo之前使用的普通IntentService转换为JobIntentService也非常容易。因为它在支持库中,所以它被后移植到以前的版本。在奥利奥及以上版本中,它让操作系统决定何时安排作业(您不必直接使用JobDispatcher),在奥利奥之前,将启动正常的IntentService。该服务通过调用静态帮助程序enqueueWork()方法来启动和处理工作。

请参阅此处了解更多详细信息:

https://developer.android.com/reference/android/support/v4/app/JobIntentService.html

相关内容

  • 没有找到相关文章

最新更新