首页 > 解决方案 > 在 JobIntentService 中将 setInterruptIfStopped 设置为 true 有什么意义?

问题描述

JobIntentService 有一个setInterruptIfStopped方法,当设置为 时,如果作业停止true,则导致当前运行:AsyncTaskcancel

void setInterruptIfStopped(布尔型中断IfStopped)

如果作业停止,控制在 onHandleWork(Intent) 中执行的代码是否会被中断。默认情况下这是错误的。如果调用并设置为 true,则任何时候调用 onStopCurrentWork(),该类都会首先调用 AsyncTask.cancel(true) 来中断正在运行的任务。

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

但是,这实际上并不会中断onHandleWork. 相反,这只是booleanAsyncTaskto中设置 a true,我需要检查它onHandleWork以手动中断我的工作。

public final boolean isCancelled()

如果此任务在正常完成之前被取消,则返回 true。如果您在任务上调用 cancel(boolean),则应定期从 doInBackground(Object[]) 检查此方法返回的值,以尽快结束任务。

https://developer.android.com/reference/android/os/AsyncTask

但是为此我们已经有了JobIntentService'isStopped方法:

布尔 isStopped ()

如果 onStopCurrentWork() 已被调用,则返回 true。您可以在执行工作时使用它来查看是否应该停止它。

据我了解,我们甚至无法访问AsyncTask'isCancelled方法。那么 in 有什么用setInterruptIfStoppedJobIntentService

标签: androidjob-schedulingandroid-jobschedulerjobservicejobintentservice

解决方案


推荐阅读