首页 > 解决方案 > 处置时 Xamarin Android 组件崩溃

问题描述

我们正在使用名为Sharpnado.Forms.Horizo​​ntalListView的第 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'.

标签: c#androidxamarinxamarin.formsmono

解决方案


推荐阅读