【问题标题】:IllegalArgumentException: No such service ComponentInfo{JobIntentService}IllegalArgumentException:没有这样的服务 ComponentInfo{JobIntentService}
【发布时间】:2018-10-08 08:06:38
【问题描述】:

所以关于这个问题的答案对我没有帮助,我已经声明了所有权限并且已经在我的代码中接受了答案。

AppInfoJobService(CustomJobIntentService) 在 Android OS 8+ 设备上抛出以下错误,并且很少发生,无法重现。 我们在BaseActivityonCreate中排队工作。我们主要有一个活动和片段。

Fatal Exception: java.lang.IllegalArgumentException: No such service ComponentInfo{<app package>AppInfoJobService}
   at android.os.Parcel.readException(Parcel.java:2009)
   at android.os.Parcel.readException(Parcel.java:1951)
   at android.app.job.IJobScheduler$Stub$Proxy.enqueue(IJobScheduler.java:211)
   at android.app.JobSchedulerImpl.enqueue(JobSchedulerImpl.java:53)
   at android.support.v4.app.JobIntentService$JobWorkEnqueuer.enqueueWork(JobIntentService.java:342)
   at android.support.v4.app.JobIntentService.enqueueWork(JobIntentService.java:522)
   at android.support.v4.app.JobIntentService.enqueueWork(JobIntentService.java:500)
   at <application package>AppInfoJobService.startWork(AppInfoJobService.java:254)
   at <application package>MyApplication.onStartStopChanged(MusicApplication.java:694)
   at <application package>AppStateMonitor.notifyStartStop(AppStateMonitor.java:150)
   at <application package>AppStateMonitor.access$000(AppStateMonitor.java:14)
   at <application package>AppStateMonitor$CreateDestroyRunnable.run(AppStateMonitor.java:71)
   at android.os.Handler.handleCallback(Handler.java:790)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:164)
   at android.app.ActivityThread.main(ActivityThread.java:6545)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:857) 

【问题讨论】:

  • 我在运行 Oreo 的 LAVA 设备上遇到了同样的问题。你有什么发现吗?
  • No 找不到任何东西,所以我将代码从 JobIntentService 移到了一个简单的线程。
  • 您认为问题是因为我们试图在片段的 onCreate 中启动 jobIntentService 吗?
  • 我们在创建第一个 Activity 时启动 JobIntentService,在一个延迟 300 毫秒的处理程序中,而不是在 onCreate 片段中。为什么在 onCreate 中有问题?
  • 不,这不是问题..它不应该是..我只是想调试和调查为什么会发生这种情况..在我的情况下,它只发生在运行 android 8 的 LAVA 设备上。 . 无论如何,我把解决问题放在首位,所以希望我能很快找到问题的根源.. 话虽如此,在后延迟处理程序中调用你的工作后,你仍然遇到这个错误吗?

标签: android android-8.0-oreo illegalargumentexception jobintentservice


【解决方案1】:

注意:因为我没有足够的声誉来发表评论并想帮助作者,所以开始一个单独的线程。

这实际上是具有 Android Oreo 的 LAVA 设备的问题,并且在其他设备上运行良好。

我也在 LAVA Z60s 和 LAVA Z61 上观察到了这一点。

从 crashlytics 添加相关信息

【讨论】:

  • 那是正确的,我无法重现,因为我无法使用 LAVA 设备,希望有人能解答/修复这个问题。
  • @BasselMourjan 我能够复制相同的内容。你可以试试this之类的东西吗?您现在可以通过在此处添加“IllegalArgumentException”和“SecurityException”来忽略这一点。
  • 我会在下一个版本中尝试它..为什么不..但我不认为这是解决方案,因为主要问题是“没有这样的服务”
  • @BasselMourjan 这绝对不是解决方案,但您可以避免崩溃只是为了改善用户体验。
  • @SaranSankaran 对延迟响应感到抱歉,但我们找不到任何解决方案,并最终抑制了异常。
【解决方案2】:

切换到新的Android WorkManager后问题终于解决了

【讨论】:

  • 我也想这样做。是 WM 测试的解决方案吗,我希望它不会增加另一个错误计数。
  • 老实说,我一直等到它是一个稳定版本,然后才将它应用到我的活跃应用中,活跃用户超过 10k... 到目前为止,3 次崩溃仅影响 1 个用户
【解决方案3】:

我的情况是我没有在 AndroidManifest.xml 中创建服务,所以它没有找到该服务。 为此,请添加以下内容:

    ...
    /activity>
    <service
        android:name=".YOUR_FOLDER.YOUR_SERVICE_FILENAME"
        android:permission="android.permission.BIND_JOB_SERVICE"
        android:exported="false" />
    <receiver
        android:name=".YOUR_FOLDER.YOUR_RECEIVER_FILENAME"></receiver>

</application> 

【讨论】:

  • 投了反对票,因为这是我们正在讨论的另一个问题
  • 这实际上是我的问题的原因,谢谢!
【解决方案4】:

当应用程序处于后台或应用程序被终止并尝试重新启动服务时,您无法使用 startService 方法启动服务或 intentService。

据我所知,情况是(正如你所说的很少发生)应用程序试图在应用程序不在内存中时重新启动应用程序。

【讨论】:

  • 投反对票,因为这不能解决问题中的具体问题。即为什么 JobScheduler.schedule 在这种情况下会抛出 IllegalArgumentException。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2020-01-20
  • 2021-04-12
  • 2019-12-14
  • 1970-01-01
  • 2011-12-26
相关资源
最近更新 更多