Android 在前台启动 JobService
Start JobService in foreground on Android
我使用 com.firebase.jobdispatcher.JobService
来同步数据,我通过使用 FirebaseJobDispatcher
安排 Job
来启动它。
问题:我不喜欢它在我第一次启动应用程序之前运行的延迟。
有什么方法可以让我在 Android O 上启动该服务,作为我第一次使用它时的前台服务(带有通知)? (而不是将其安排为工作)
我试过了:
ContextCompat.startForegroundService(context, intent);
但这并没有调用JobService
的onCreate。
我建议您使用 Oreo 中引入的新 JobIntentService,而不是 FirebaseJobDispatcher。然后你可以从你的应用程序的前台启动后台服务(现在不允许在后台创建后台服务,在你必须显示通知之前你只有 5 秒的时间做事)。使用 JobIntentService,您没有这些限制。
如果您不想,也不必显示同步通知。但是如果真的需要做,在JobIntentService中的onHandleWork()方法中做。
这篇文章很好地解释了 Oreo 中新的后台执行限制:
https://medium.com/til-kotlin/jobintentservice-for-background-processing-on-android-o-39535460e060
JobIntentService 非常易于使用,可以解决您在新后台限制下可能遇到的任何问题。将 Oreo 之前使用的普通 IntentService 转换为 JobIntentService 也非常容易。因为它在支持库中,所以它被反向移植到以前的版本。在 Oreo 及更高版本中,它让 OS 决定何时安排作业(您不必直接使用 JobDispatcher),并且在 Oreo 之前将启动一个普通的 IntentService。该服务通过调用静态帮助程序 enqueueWork() 方法启动和处理工作。
详情请看这里:
https://developer.android.com/reference/android/support/v4/app/JobIntentService.html
结论:使用两个服务。
A com.firebase.jobdispatcher.JobService
无法在前台启动。
正常 Service
无法按计划启动 Job
。
我创建了两个启动相同同步流的服务 类:已修复。
我使用 com.firebase.jobdispatcher.JobService
来同步数据,我通过使用 FirebaseJobDispatcher
安排 Job
来启动它。
问题:我不喜欢它在我第一次启动应用程序之前运行的延迟。
有什么方法可以让我在 Android O 上启动该服务,作为我第一次使用它时的前台服务(带有通知)? (而不是将其安排为工作)
我试过了:
ContextCompat.startForegroundService(context, intent);
但这并没有调用JobService
的onCreate。
我建议您使用 Oreo 中引入的新 JobIntentService,而不是 FirebaseJobDispatcher。然后你可以从你的应用程序的前台启动后台服务(现在不允许在后台创建后台服务,在你必须显示通知之前你只有 5 秒的时间做事)。使用 JobIntentService,您没有这些限制。
如果您不想,也不必显示同步通知。但是如果真的需要做,在JobIntentService中的onHandleWork()方法中做。
这篇文章很好地解释了 Oreo 中新的后台执行限制:
https://medium.com/til-kotlin/jobintentservice-for-background-processing-on-android-o-39535460e060
JobIntentService 非常易于使用,可以解决您在新后台限制下可能遇到的任何问题。将 Oreo 之前使用的普通 IntentService 转换为 JobIntentService 也非常容易。因为它在支持库中,所以它被反向移植到以前的版本。在 Oreo 及更高版本中,它让 OS 决定何时安排作业(您不必直接使用 JobDispatcher),并且在 Oreo 之前将启动一个普通的 IntentService。该服务通过调用静态帮助程序 enqueueWork() 方法启动和处理工作。
详情请看这里:
https://developer.android.com/reference/android/support/v4/app/JobIntentService.html
结论:使用两个服务。
A com.firebase.jobdispatcher.JobService
无法在前台启动。
正常 Service
无法按计划启动 Job
。
我创建了两个启动相同同步流的服务 类:已修复。