Получение сбоя на JobIntentService onComplete

Я получаю следующие отчеты о сбоях для Android 8, но не могу найти причину или исправить это:

java.lang.IllegalArgumentException: Given work is not active: JobWorkItem{id=1 intent=Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x1000010 pkg=com.xxx.android cmp=com.xxx.android/com.pushio.manager.PushIOGCMIntentService (has extras) } dcount=1}
at android.app.job.JobParameters.completeWork(JobParameters.java:221)
       at android.support.v4.app.JobIntentService$JobServiceEngineImpl$WrapperWorkItem.complete(JobIntentService.java:267)
       at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:393)
       at android.support.v4.app.JobIntentService$CommandProcessor.doInBackground(JobIntentService.java:382)
       at android.os.AsyncTask$2.call(AsyncTask.java:333)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)

Я использую PushIO lib для push-уведомлений.

1 ответ

Для меня это случилось, когда у меня было 2 разных JobIntentServiceкоторые оба использовали один и тот же JOB_ID (последний параметр enqueueWork()

Похоже, этот идентификатор должен быть уникальным во всем приложении.

Изменить: Да, сначала я подумал, что он должен быть уникальным только для класса, для которого вы его используете, но это не так! Он должен быть уникальным для всего вашего приложения, для каждого UID. Так что, если используемая вами библиотека использует тот же идентификатор, вам нужно изменить его на что-то другое. Не уверен, как вы должны знать, какие удостоверения личности уже приняты.

Другое дело, что вы не можете использовать разные идентификаторы для одного и того же класса. Это также должен быть один и тот же идентификатор для того же класса, в противном случае второй вызов с другим идентификатором JOB будет игнорироваться

Другие вопросы по тегам