首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android上启动前台JobService

在Android上启动前台JobService
EN

Stack Overflow用户
提问于 2017-10-18 09:37:28
回答 2查看 5.1K关注 0票数 2

我使用com.firebase.jobdispatcher.JobService来同步数据,首先使用FirebaseJobDispatcher调度Job

问题:我不喜欢在我的第一个应用程序启动之前的延迟。

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

我试过:

代码语言:javascript
复制
ContextCompat.startForegroundService(context, intent);

但这并不叫onCreate of JobService

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-05 09:58:46

结论:使用两种服务。

不能在前台启动com.firebase.jobdispatcher.JobService

正常的Service不能作为计划的Job启动。

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

票数 3
EN

Stack Overflow用户

发布于 2017-10-18 09:52:26

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

如果不愿意,也不需要显示同步的通知。但是,如果确实需要这样做,请在onHandleWork()方法中使用JobIntentService。

本文很好地解释了奥利奥的新背景执行限制:

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

JobIntentService非常容易使用,并解决了新的背景限制可能面临的任何问题。将普通的IntentService转换成JobIntentService也非常容易,就像以前的奥利奥一样。因为它在支持库中,所以它被移植到以前的版本中。在Oreo和up中,它让操作系统决定什么时候安排作业(您不需要直接使用JobDispatcher),并且在Oreo之前将启动一个正常的IntentService。服务通过调用静态助手enqueueWork()方法启动和处理工作。

有关更多细节,请参见此处:

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46807091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档