【问题标题】:Getting crash on JobIntentService onCompleteJobIntentService onComplete 崩溃
【发布时间】:2018-08-07 09:11:14
【问题描述】:

我收到了有关 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 库进行推送通知。

【问题讨论】:

  • 为什么我得到-1?
  • 我认为由于缺乏您尝试解决此问题的信息。顺便说一句,我遇到了同样的问题

标签: android android-8.0-oreo responsys


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢回复,我今天试一下,告诉你。
  • 我使用 1000 作为 JOB_ID 仅用于一项服务
  • @ChangdeoJadhav 图书馆可能已经在使用这个 ID,换一个试试吧
  • 找到了两个不同的库,使用 1000 作为其服务的 JOB_ID:P 谢谢
  • @ChangdeoJadhav 你怎么发现job id 1000 已经被其他库使用了...
猜你喜欢
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 2021-05-14
  • 1970-01-01
  • 2016-11-09
相关资源
最近更新 更多