【问题标题】:Mapbox crash Android 8 (Oreo)Mapbox 崩溃 Android 8 (Oreo)
【发布时间】:2018-03-06 23:34:51
【问题描述】:

我一直在使用 Mapbox 4.2.2 版本,因为我还没有准备好迁移到 Mapbox 5,因为似乎不支持版本 4 中的一些功能。 (具体Camera Tracking

我发现我遇到了关于 Android 8 设备的崩溃问题。

Caused by java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.sctaylor.map/com.mapbox.mapboxsdk.telemetry.TelemetryService }: app is in background uid UidRecord{3534d78 u0a235 CEM  idle procs:1 seq(0,0,0)}
   at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1512)
   at android.app.ContextImpl.startService(ContextImpl.java:1468)
   at android.content.ContextWrapper.startService(ContextWrapper.java:644)
   at com.mapbox.mapboxsdk.telemetry.MapboxEventManager.setTelemetryEnabled(MapboxEventManager.java:252)
   at com.mapbox.mapboxsdk.telemetry.MapboxEventManager.initialize(MapboxEventManager.java:146)
   at com.mapbox.mapboxsdk.MapboxAccountManager.start(MapboxAccountManager.java:50)
   at com.sctaylor.map.AnalyticsApplication.onCreate(AnalyticsApplication.java:44)
   at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119)
   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5821)
   at android.app.ActivityThread.-wrap1(Unknown Source)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1669)
   at android.os.Handler.dispatchMessage(Handler.java:105)
   at android.os.Looper.loop(Looper.java:251)
   at android.app.ActivityThread.main(ActivityThread.java:6580)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

这似乎是 Android 8 后台服务限制的问题(需要使用作业调度程序)。有没有办法在不升级到 Mapbox 5 的情况下解决这个问题?

【问题讨论】:

    标签: android mapbox mapbox-android


    【解决方案1】:

    这似乎是 Android 8 后台服务的问题 限制(需要使用作业调度程序)。有没有办法来解决这个问题 不升级到 Mapbox 5?

    您对问题的原因完全正确。

    该问题已在 GitHub 上here 报告,更新将传播here

    干净的修复是 Mapbox 实现 JobScheduler。但是,他们还没有发布修复程序,我不知道他们是否会为 4.x 版本修复它

    作为现代修复,他们刚刚捕获了IllegalStateException,而 Mapbox 似乎仍然可以工作。

    MapboxAccountManager.start() 周围使用try/catch 方法似乎不是一个好主意,因为setTelemetryEnabled() 之后的代码不会被执行。

    我看到的唯一解决方法是将 targetSdkVersion 降级为 25。

    【讨论】:

    • 好主意,我现在要推出更新并报告进展情况!
    • 我遇到了同样的问题。感谢您的确认!
    • @SCTaylor 您能否在降级 targetSDK 版本之前重现该错误?
    • 我无法始终如一地重现它,但我确实在模拟器中看到过一次。但从来没有在实际设备上。
    • 我在 android 8.0 oreo 中遇到了同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多