如何取消 JobIntentService

How to cancel a JobIntentService

如何取消 JobIntentService?我在文档中看不到这样做的方法,除了 JobSheduler API 和 Context#stopService(...) 方法,我不确定这是否是正确的方法。

在 Android 8.0 之前,JobIntentService 作为 IntentService 实现。在其 onHandleIntent 方法完成前一个请求之前,IntentService 不会通过某些意图操作停止或接受任何其他请求。 stopService() 在任务 finished.And 之前不会被调用,它会在任务完成时自动调用。这是 IntentService 的一个特性,但是这里已经回答了一个类似的问题,指的是 IntentServices,希望它能有所帮助。

answered question

也查看 android developers

JobIntentService 只是将 IntentService 带到了 Android 8+,后者对后台服务更加严格。它在具有旧版本 Android 的设备上运行起来像旧的 IntentServices。

IntentService 从未设计为可取消,因此缺少任何 API 来取消 JobIntentService.

因此,JobIntenService只能用于不需要取消的工作。请注意,JobIntentService仍然可以用于工作可能 失败 ,并因此被中止。

可以取消的工作应在以下任一时间执行:

  • 一份 Activity(或其 ViewModel)的短期工作
  • 一个 JobService(如果 minSdk 为 21,则使用 Firebase Job Dispatcher 或 Job Scheduler)
  • 自定义前台服务