JobIntentService имеет метод setInterruptIfStopped
, который при значении true
вызывает текущее выполнение AsyncTask
до cancel
, если задание остановлено:
void setInterruptIfStopped (boolean interruptIfStopped)
Контроль того, будет ли код, выполняемый в onHandleWork (Intent), прерываться, если задание будет остановлено.По умолчанию это ложно.При вызове и значении true каждый раз, когда вызывается onStopCurrentWork (), класс сначала вызывает AsyncTask.cancel (true), чтобы прервать выполняемое задание.
https://developer.android.com/reference/android/support/v4/app/JobIntentService
Однако это на самом деле не прерывает работу, выполняемую в onHandleWork
.Вместо этого это просто устанавливает boolean
в AsyncTask
на true
, который мне нужно будет проверить в onHandleWork
, чтобы прервать мою работу вручную.
public final boolean isCancelled ()
Возвращает true, если это задание было отменено до его обычного завершения.Если вы вызываете метод отмены (логический) для задачи, значение, возвращаемое этим методом, следует периодически проверять из doInBackground (Object []), чтобы завершить задачу как можно скорее.
https://developer.android.com/reference/android/os/AsyncTask
Но для этого у нас уже есть метод JobIntentService
isStopped
:
boolean isStopped ()
Возвращает true, если onStopCurrentWork () былназывается.Вы можете использовать это, выполняя свою работу, чтобы увидеть, следует ли ее остановить.
Насколько я понимаю, мы даже не можем получить доступ к методу AsyncTask
isCancelled
.Так какая польза от setInterruptIfStopped
в JobIntentService
?