Xamarin.Forms.Platform.Android.Platform + DefaultRenderer из родного дескриптора - PullRequest
0 голосов
/ 02 мая 2018

Я занимаюсь разработкой приложения для Android с использованием форм xamarin. Через несколько дней я получаю ниже вопроса.

CurrentDomainOnUnhandledException ---> System.NotSupportedException: Невозможно активировать экземпляр типа Xamarin.Forms.Platform.Android.Platform + DefaultRenderer из нативного обрабатывать 0xbeb0861c (key_handle 0xb3a225b). ---> System.MissingMethodException: не найден конструктор для Xamarin.Forms.Platform.Android.Platform + DefaultRenderer ::. Т е р (System.IntPtr, Android.Runtime.JniHandleOwnership) ---> Java.Interop.JavaLocationException: исключение типа Выдано «Java.Interop.JavaLocationException». 05-02 14: 36: 57.973 I / mono-stdout (16628): System.Exception: CurrentDomainOnUnhandledException ---> System.NotSupportedException: Невозможно активировать экземпляр типа Xamarin.Forms.Platform.Android.Platform + DefaultRenderer из нативного обрабатывать 0xbeb0861c (key_handle 0xb3a225b). ---> System.MissingMethodException: не найден конструктор для Xamarin.Forms.Platform.Android.Platform + DefaultRenderer ::. Т е р (System.IntPtr, Android.Runtime.JniHandleOwnership) ---> Java.Interop.JavaLocationException: исключение типа Выдано «Java.Interop.JavaLocationException». --- конец внутреннего трассировка стека исключений --- 05-02 14: 36: 57,975 I / mono-stdout (16628):
--- Конец внутренней трассировки стека исключений --- в Java.Interop.TypeManager.CreateProxy (тип System.Type, System.IntPtr обрабатывать передачу Android.Runtime.JniHandleOwnership) [0x00054] в : 0 05-02 14: 36: 57.978 I / mono-stdout (16628): в Java.Interop.TypeManager.CreateProxy (Тип System.Type, дескриптор System.IntPtr, Передача Android.Runtime.JniHandleOwnership) [0x00054] в : 0 в Java.Interop.TypeManager.CreateInstance (дескриптор System.IntPtr, Передача прав Android.Runtime.JniHandle, System.Type targetType) [0x00111] в: 0 05-02 14: 36: 57,980 I / mono-stdout (16628): в Java.Interop.TypeManager.CreateInstance (Дескриптор System.IntPtr, передача Android.Runtime.JniHandleOwnership, System.Type targetType) [0x00111] в : 0 --- Конец внутреннего исключения трассировка стека --- 05-02 14: 36: 57.982 I / mon-stdout (16628): --- Конец внутренняя трассировка стека исключений --- в Java.Interop.TypeManager.CreateInstance (дескриптор System.IntPtr, Передача прав Android.Runtime.JniHandle, System.Type targetType) [0x0017d] в: 0 05-02 14: 36: 57,984 I / mono-stdout (16628): в Java.Interop.TypeManager.CreateInstance (Дескриптор System.IntPtr, передача Android.Runtime.JniHandleOwnership, System.Type targetType) [0x0017d] в : 0 в Java.Lang.Object.GetObject (Дескриптор System.IntPtr, передача Android.Runtime.JniHandleOwnership, Тип System.Type) [0x000b9] в: 0 05-02 14: 36: 57.986 I / mon-stdout (16628): в Java.Lang.Object.GetObject (дескриптор System.IntPtr, Передача Android.Runtime.JniHandleOwnership, тип System.Type) [0x000b9] в: 0 в Java.Lang.Object._GetObject [T] (дескриптор System.IntPtr, Передача Android.Runtime.JniHandleOwnership) [0x00017] в : 0 05-02 14: 36: 57,988 I / mono-stdout (16628): на Java.Lang.Object._GetObject [T] (Дескриптор System.IntPtr, передача Android.Runtime.JniHandleOwnership) [0x00017] в: 0

в Java.Lang.Object.GetObject [T] (дескриптор System.IntPtr, Передача Android.Runtime.JniHandleOwnership) [0x00000] в : 0 в Java.Lang.Object.GetObject [T] (System.IntPtr jnienv, System.IntPtr ручка, передача Android.Runtime.JniHandleOwnership) [0x00006] в : 0 в Android.Views.View.n_DispatchTouchEvent_Landroid_view_MotionEvent_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_e) [0x00000] в: 0 в (оболочка динамического метода) System.Object: 3943ee27-49d5-404c-b2ef-5f107b52e084 (intptr, intptr, intptr) --- Конец внутренней трассировки стека исключений

1 Ответ

0 голосов
/ 17 мая 2018
  1. Я провел большую исследовательскую работу по этому вопросу. Я понял, что когда система вызывает GC, она собирает все объекты, такие как управляемые, неуправляемые, равноправные объекты. Одноранговые объекты - это нативные объекты, используемые в PCL. Когда эти объекты становятся нулевыми, система не знает, что требуется для создания этих объектов снова. Поэтому следует сообщить системе, что вам нужно создавать объекты.

Это можно сделать, просто добавив конструктор для всех пользовательских средств визуализации. public CustomEntryImageRenderer (дескриптор IntPtr, передача JniHandleOwnership) {}

  1. Я изменил все свои элементы управления на пользовательские средства визуализации и добавил этот конструктор для всех средств визуализации.

  2. Если вы используете какое-либо всплывающее окно rg plugins, установите для анимации значение false.

4.Добавьте приведенный ниже метод переопределения в свой пользовательский просмотр списка визуализации.

    protected override void Dispose(bool disposing)
    {

        Xamarin.Forms.Device.BeginInvokeOnMainThread(base.Dispose);

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...