在 JobIntentService onComplete 上崩溃

Getting crash on 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.call(AsyncTask.java:333)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)

我正在使用 PushIO 库进行推送通知。

对我来说,这发生在我有 2 个不同的 JobIntentService 时,它们都使用相同的 JOB_ID(enqueueWork()

的最后一个参数

看来这个 ID 在您的整个应用中必须是唯一的。

编辑:是的,起初我认为它需要是独一无二的,只是为了 class 您正在使用它,但事实并非如此! 每个 UID 对于您的 whole 应用来说必须是唯一的。因此,如果您使用的库使用相同的 ID,则需要将其更改为其他内容。不确定您应该如何知道哪些 ID 已被占用。

另一件事是,您不能对同一个 class 使用不同的 ID。对于相同的 class,它也必须是相同的 ID,否则将忽略具有不同 JOB ID 的第二次调用