使用WorkManager调度重复工作时出现IllegalStateException异常

3

我们有一个使用最新版本的Android work manager 1.00.00调度重复工作的应用程序。该工作每20分钟运行一次。在发布更新之后,我们在Google开发者控制台上注意到了以下崩溃。

最初的回答:

java.lang.IllegalStateException: 
  at android.os.Parcel.readException (Parcel.java:1691)
  at android.os.Parcel.readException (Parcel.java:1636)
  at android.app.job.IJobScheduler$Stub$Proxy.schedule (IJobScheduler.java:158)
  at android.app.JobSchedulerImpl.schedule (JobSchedulerImpl.java:42)
  at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal (SystemJobScheduler.java:161)
  at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule (SystemJobScheduler.java:128)
  at androidx.work.impl.Schedulers.schedule (Schedulers.java:91)
  at androidx.work.impl.utils.ForceStopRunnable.run (ForceStopRunnable.java:100)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1133)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:607)
  at java.lang.Thread.run (Thread.java:761)

这个错误只会在运行Android 7.0和7.1的设备上(100%)发生。由于堆栈跟踪中没有提到我们的代码,因此我们无法知道是什么原因导致了这个问题。

请注意,我们使用自定义的WorkManager初始化。另外请注意,由于我们没有收到有关崩溃的电子邮件,所以该错误可能对用户不可见。

有人知道这是怎么回事吗?

最初的回答:


只需在更新之前和之后对代码进行diff比较即可。 - Martin Zeitler
我们的代码没有任何改动导致了这个问题。错误似乎是由特定设备上有缺陷的JobScheduler实现引起的。我已经用更多的信息回答了这个问题。 - a.p.
1个回答

3
我已将上述问题报告给WorkManager问题跟踪器,并收到了一个合理的回复。这似乎是由于某些特定设备上存在有缺陷的JobScheduler实现引起的。以下是我收到的回复。
“一些设备会出现JobScheduler的错误实现。这是他们的JobScheduler实现中的一个错误。这些设备数量较少,而且不是每次都会发生。当应用程序重新启动时,WorkManager会优雅地重新安排您的Worker。我不会担心这个问题。”
这是相关链接:https://issuetracker.google.com/issues/122446608

你手头有这个问题的链接吗?谢谢。 - CaptainCrunch
我已经更新了我的回复,包括问题的链接。 - a.p.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接