Какой смысл устанавливать для setInterruptIfStopped значение true в JobIntentService? - PullRequest
0 голосов
/ 19 ноября 2018

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?

...