当前位置 : 主页 > 手机开发 > android >

android – 在JobIntentService onComplete上崩溃

来源:互联网 收集:自由互联 发布时间:2021-06-11
我收到了关于 Android 8的崩溃报告,但我找不到理由或修复此问题: java.lang.IllegalArgumentException: Given work is not active: JobWorkItem{id=1 intent=Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x1000010 p
我收到了关于 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进行推送通知.

对我来说,这发生在我有两个不同的JobIntentService时,它们都使用相同的JOB_ID(enqueueWork的最后一个参数()

所以看起来这个ID在整个应用程序中都必须是唯一的.

编辑:是的,起初我认为它必须是唯一的,只是你正在使用它的类,但事实并非如此!
根据UID,它需要对您的整个应用程序都是唯一的.因此,如果您使用的库使用相同的ID,则需要将其更改为其他内容.不知道你应该如何知道已经使用了哪个ID.

另一件事是,你不能为同一个班级使用不同的ID.它也必须是同一个类的相同ID,否则将忽略具有不同JOB ID的第二个调用

网友评论