Сбой компонента Xamarin Android при утилизации

#c# #android #xamarin #xamarin.forms #mono

#c# #Android #xamarin #xamarin.forms #mono

Вопрос:

Мы используем компонент третьей стороны под названием Sharpnado.Формы.HorizontalListView

Каждый раз, когда мы хотим удалить объект внутри пользовательского средства визуализации Android с помощью:

 Control.GetAdapter()?.Dispose();
  

Приложение выходит из строя (см. стек ошибок ниже)

Если мы не вызываем Dispose, у нас не будет сбоя, но у нас есть потенциальная утечка памяти.

Вопросы:

1 — Можем ли мы обойти эту проблему на нашей стороне или это зависит только от стороннего владельца компонента, чтобы исправить это?

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:DevSharpnadosrcXamarin-Forms-PracticesSharpnado.Presentation.FormsSharpnado.Presentation.Forms.DroidRenderersHorizontalListAndroidHorizontalListViewRenderer.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:DevSharpnadosrcXamarin-Forms-PracticesSharpnado.Presentation.FormsSharpnado.Presentation.Forms.DroidRenderersHorizontalListAndroidHorizontalListViewRenderer.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'.
  

Комментарии:

1. Вы уверены, что используете последнюю версию? Я полагаю, что исправление для этого было выпущено на прошлой неделе.

2. Да, я обновился до 0.9.11, но проблема остается

3. Адаптер, который вы пытаетесь утилизировать, является вашим пользовательским?

4. это пользовательский RecycleViewAdapter в стороннем компоненте