JobIntentService具有setInterruptIfStopped
方法,该方法在设置为true
时,如果作业已停止,则导致当前正在运行的AsyncTask
为cancel
:
void setInterruptIfStopped(布尔中断IfStopped)
控制如果作业停止,在onHandleWork(Intent)中执行的代码是否将被中断。默认情况下为false。如果被调用并设置为true,则每次调用onStopCurrentWork()时,该类都会首先调用AsyncTask.cancel(true)来中断正在运行的任务。
https://developer.android.com/reference/android/support/v4/app/JobIntentService
但是,这实际上并不会中断onHandleWork
中运行的工作。相反,这只是将boolean
中的AsyncTask
设置为true
,我需要在onHandleWork
中进行检查以手动中断我的工作。
公共最终布尔值isCancelled()
如果此任务在正常完成之前被取消,则返回true。如果要在任务上调用cancel(boolean),则应定期从doInBackground(Object [])中检查此方法返回的值,以尽快结束任务。
https://developer.android.com/reference/android/os/AsyncTask
但是为此,我们已经有了JobIntentService
的{{1}}方法:
boolean isStopped()
如果已调用onStopCurrentWork(),则返回true。您可以在执行工作时使用它来查看是否应该停止它。
据我了解,我们甚至无法访问isStopped
的{{1}}方法。
那么AsyncTask
中isCancelled
的用途是什么?