c# - 处置时 Xamarin Android 组件崩溃
问题描述
我们正在使用名为Sharpnado.Forms.HorizontalListView的第 3 方组件
每次我们想在 Android 自定义渲染器中处理对象时,使用:
Control.GetAdapter()?.Dispose();
应用程序崩溃(请参阅下面的错误堆栈)
如果我们不调用 Dispose,则不会发生崩溃,但存在潜在的内存泄漏。
问题:
1 - 我们可以在我们这边解决这个问题,还是只取决于第 3 方组件所有者来解决它?
2 - 有没有不同的方法来做这个处理?
谢谢
[MonoDroid] System.NullReferenceException: Object reference not set to an instance of an object.
[MonoDroid] at Sharpnado.Presentation.Forms.Droid.Renderers.HorizontalList.AndroidHorizontalListViewRenderer+RecycleViewAdapter.get_ItemCount () [0x00000] in D:\Dev\Sharpnado\src\Xamarin-Forms-Practices\Sharpnado.Presentation.Forms\Sharpnado.Presentation.Forms.Droid\Renderers\HorizontalList\AndroidHorizontalListViewRenderer.RecycleViewAdapter.cs:93
[MonoDroid] at Android.Support.V7.Widget.RecyclerView+Adapter.n_GetItemCount (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <7cd821e41c6245e986359cd08947256b>:0
[MonoDroid] at (wrapper dynamic-method) System.Object.88(intptr,intptr)
...
[AppCenterCrashes] Unhandled Exception from source=AndroidEnvironment
[AppCenterCrashes] System.NullReferenceException: Object reference not set to an instance of an object.
[AppCenterCrashes] at Sharpnado.Presentation.Forms.Droid.Renderers.HorizontalList.AndroidHorizontalListViewRenderer+RecycleViewAdapter.get_ItemCount () [0x00000] in D:\Dev\Sharpnado\src\Xamarin-Forms-Practices\Sharpnado.Presentation.Forms\Sharpnado.Presentation.Forms.Droid\Renderers\HorizontalList\AndroidHorizontalListViewRenderer.RecycleViewAdapter.cs:93
[AppCenterCrashes] at Android.Support.V7.Widget.RecyclerView+Adapter.n_GetItemCount (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <7cd821e41c6245e986359cd08947256b>:0
[AppCenterCrashes] at (wrapper dynamic-method) System.Object.88(intptr,intptr)
...
[Mono] Assembly Ref addref Microsoft.AppCenter.Crashes[0x7096654600] -> System.Core[0x70966d7c00]: 20
...
[Mono] DllImport searching in: '__Internal' ('(null)').
[Mono] Searching for 'java_interop_jnienv_new_byte_array'.
[Mono] Probing 'java_interop_jnienv_new_byte_array'.
[Mono] Found as 'java_interop_jnienv_new_byte_array'.
[Mono] DllImport searching in: '__Internal' ('(null)').
[Mono] Searching for 'java_interop_jnienv_set_byte_array_region'.
[Mono] Probing 'java_interop_jnienv_set_byte_array_region'.
[Mono] Found as 'java_interop_jnienv_set_byte_array_region'.
[zygote64] Checksum mismatch for dex base.apk:classes2.dex
[zygote64] Checksum mismatch for dex base.apk:classes2.dex
[zygote64] JNI RegisterNativeMethods: attempt to register 0 native methods for android.runtime.JavaProxyThrowable
[Mono] DllImport searching in: '__Internal' ('(null)').
[Mono] Searching for 'java_interop_jnienv_throw'.
[Mono] Probing 'java_interop_jnienv_throw'.
[Mono] Found as 'java_interop_jnienv_throw'.
解决方案
推荐阅读
- reactjs - 成功的电子构建导致白屏
- spring - Spring Boot 应用程序无法访问 Heroku 平台上的第三方 REST API,该平台正在接受特定于印度 IP 地址的请求
- javascript - 如何优化这个 firebase 实时数据库请求?
- css - CSS 过渡不适用于 react-portal
- c# - Unity 将对象转换为可编写脚本的对象
- python - 根据您在表单 django 中输入的其他值获取字段值
- python - 如何在python的源代码中查找给定变量的导入模块依赖项
- flutter - 如何在页面上显示日期选择器而无需再点击一个按钮?
- r - 如何在 R 中创建包含合并行的表
- python - 如何排队多个烧瓶 app.routes 待办事项列表?