【问题标题】:How to cancel a JobIntentService如何取消 JobIntentService
【发布时间】:2017-08-28 15:10:25
【问题描述】:

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

【问题讨论】:

  • 在 Android 8.0 之前,JobIntentService 被实现为 IntentService。虽然您可以使用stopService() 来销毁IntentService,但这可能不会影响用于onHandleIntent() 的后台线程(我从未尝试过)。

标签: android android-support-library


【解决方案1】:

JobIntentService 仅将IntentService 引入对后台服务更严格的 Android 8+。它在装有旧版 Android 的设备上运行与旧的 IntentServices 一样。

IntentService 从未被设计为取消,因此没有任何 API 可以取消JobIntentService

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

可以取消的工作应该在以下任何一个中执行:

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

【讨论】:

    【解决方案2】:

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

    answered question

    还可以查看android developers

    【讨论】:

      猜你喜欢
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 2019-04-14
      • 1970-01-01
      • 2021-08-25
      • 2020-05-15
      相关资源
      最近更新 更多