我在Crashlytics控制台得到这个错误,没有其他信息。
致命异常:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void com.esri.arcgisruntime.internal.jni.CoreDevice.b()'
com.esri.arcgisruntime.mapping.view.GeoView RenderingThread.run美元(源文件:13)
我不知道发生在哪里。我没有更多的消息
我用kotlin和com.esri.arcgisruntime: arcgis-android: 100.11.0
这种错误有时会发生,但不是所有时候
你好,
我们已经从另一个来源看到了这个错误报告,但经过进一步的调试发现他们的应用程序错误地处理方向变化。在他们的情况下,mapview被发送到后台活动/片段,甚至在实例化mapview之前就被处理掉了。
如果您有任何代码可以分享,它可以帮助我们进一步调试您的情况。您可以使用我们的一个样本,尝试重现您的工作流程并与我们分享。
https://github.com/Esri/arcgis-runtime-samples-android
谢谢
罗摩
嗨@GeobuzonAplicaciones和@RamaChintapalli我有百分之百的把握复制这个。我有三个标签,ArcMap标签在这些标签的末尾ArcMap和其他地图放在一起。我有一个开关按钮来打开ArcMap可见或不可见。在这种情况下,如果我从不切换到ArcMap并且ArcMap对用户永远不可见,那么我调用
mapSwitcherRootBinding?.arcMapView? .dispose ()
内部
onDestroyView
它必须崩溃,这个异常是JNI崩溃,不能在Kotlin端捕获。我认为一个可能的解决方案是我们能否在处理之前判断它是否被呈现?
我可以在100.10.0上重现CoreDevice.c()崩溃
CoreDevice.b()和coredevice .c()看起来像一个是公共的,并从反编译的字节码调用另一个私有函数
我注意到,如果我添加一个检查,只在当前地图已加载时处理,我不会看到崩溃。
虽然这种方法似乎有效,但如果我们不调用dispose,它会在任何特定情况下导致任何泄漏吗?@RamaChintapalli
在LOADING状态下调用dispose似乎会导致崩溃。
瓦尔loadStatus=mapView。地图。loadStatus
如果(loadStatus==LoadStatus。加载) {
mapView.dispose ()
}
我还注意到,如果只是在示例应用程序中将ESRI Android API版本更改为100.13.0,我不会看到崩溃。
看起来这个问题已经解决了。有人知道这个bug吗?@RamaChintapalli