Xamarin.forms: [Android] سبب Xamarin: android.runtime.JavaProxyThrowable: System.ObjectDisposedException: لا يمكن الوصول إلى كائن تم التخلص منه.

تم إنشاؤها على ٢ مارس ٢٠١٨  ·  66تعليقات  ·  مصدر: xamarin/Xamarin.Forms

وصف

يحدث هذا الخطأ عند التنقل بين الصفحات ذات عروض قوائم الصف المعقدة. نظرًا لعدم وجود رمز مستخدم متضمن ، لا يمكن التقاط الاستثناء والتعامل معه.

خطوات التكاثر

على فترات متقطعة.

سلوك متوقع

تصفح الصفحات لا يسبب أعطال.

السلوك الفعلي

يحدث الانهيار من حين لآخر.

معلومات اساسية

  • الإصدار مع الإصدار: 2.5 280
  • آخر إصدار جيد معروف: N / A
  • IDE: مجتمع VS2017
  • الأطر المستهدفة للمنصة:

    • أندرويد: 8.0

  • إصدار مكتبة دعم Android: 26.1.0.1

التكاثر

https://github.com/xamarin/Xamarin.Forms/files/2197967/disp2.zip

يحدث الاستثناء هنا

image

تتبع المكدس

Xamarin caused by: android.runtime.JavaProxyThrowable: System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Android.Graphics.Bitmap'.
  at Java.Interop.JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) [0x00029] in <e8c0e16a54534fa885244f0ad837c79e>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualInt32Method (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00000] in <e8c0e16a54534fa885244f0ad837c79e>:0 
  at Android.Graphics.Bitmap.get_Height () [0x0000a] in <848bbd7c681a4975918c72f17d2f5144>:0 
  at Xamarin.Forms.Platform.Android.ButtonDrawable.Draw (Android.Graphics.Canvas canvas) [0x00021] in D:\agent_work\1\s\Xamarin.Forms.Platform.Android\Renderers\ButtonDrawable.cs:55 
  at Android.Graphics.Drawables.Drawable.n_Draw_Landroid_graphics_Canvas_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_canvas) [0x0000f] in <848bbd7c681a4975918c72f17d2f5144>:0 
  at (wrapper dynamic-method) System.Object:224a5ebe-c56f-4264-ad89-b784cc0da834 (intptr,intptr,intptr)
    at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonDrawable.n_draw(Native Method)
    at md5b60ffeb829f638581ab2bb9b1a7f4f3f.ButtonDrawable.draw(ButtonDrawable.java:50)
    at android.graphics.drawable.RippleDrawable.drawContent(RippleDrawable.java:836)
    at android.graphics.drawable.RippleDrawable.draw(RippleDrawable.java:692)
    at android.view.View.getDrawableRenderNode(View.java:18643)
    at android.view.View.drawBackground(View.java:18579)
    at android.view.View.draw(View.java:18367)
    at android.view.View.updateDisplayListIfDirty(View.java:17354)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.draw(View.java:18379)
    at android.view.View.updateDisplayListIfDirty(View.java:17354)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.widget.ListView.drawChild(ListView.java:3761)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.widget.AbsListView.dispatchDraw(AbsListView.java:3551)
    at android.widget.ListView.dispatchDraw(ListView.java:3744)
    at android.view.View.draw(View.java:18379)
    at android.widget.AbsListView.draw(AbsListView.java:7199)
    at android.view.View.updateDisplayListIfDirty(View.java:17354)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.draw(View.java:18379)
    at android.view.View.updateDisplayListIfDirty(View.java:17354)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.draw(View.java:18379)
    at android.view.View.updateDisplayListIfDirty(View.java:17354)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1366)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.draw(View.java:18379)
    at android.view.View.updateDisplayListIfDirty(View.java:17354)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.updateDisplayListIfDirty(View.java:17349)
    at android.view.View.draw(View.java:18138)
    at android.view.ViewGroup.drawChild(ViewGroup.java:3969)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3755)
    at android.view.View.draw(View.java:18379)
    at com.android.internal.policy.DecorView.draw(DecorView.java:940)
    at android.view.View.updateDisplayListIfDirty(View.java:17354)
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:692)
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:698)
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:806)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:3136)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2932)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2520)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1519)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7113)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
    at android.view.Choreographer.doCallbacks(Choreographer.java:702)
    at android.view.Choreographer.doFrame(Choreographer.java:638)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6780)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
3 high impact Android bug

التعليق الأكثر فائدة

duzenko حسنًا ، لقد أخرجت جهاز Android قديمًا وأستطيع إعادة إنشائه هناك باستمرار !!!

متحمس جدا لذلك. لقد كان هذا الأمر مؤلمًا لبعض الوقت ، لذا فأنا أقدر حقًا التأنيب والتشبث بي في هذا الأمر.

ال 66 كومينتر

يرجى تقديم نسخة.

لا يمكنني جعل بناء الإنتاج لدينا يفشل في كل مرة. عادةً ما يحدث ذلك في كل مرة في بداية اليوم ، ولكن عندما أحاول تكراره في تطبيق اختباري ، فإنه يتوقف عن الحدوث على جهاز في بناء الإنتاج أيضًا.

ههههههههههه
كيف يمكنني أن أرسل لك الكود المصدري لتطبيقنا؟ إنه مصدر مغلق ولا يمكنني إرفاقه بهذه التذكرة.
يمكنني تكراره الآن طوال الوقت على جهاز (ولكن ليس على جهاز محاكاة).

xp.zip
حالة Repro.
خطوات:

  1. باستخدام قائمة الدرج ، انتقل إلى قائمة العناوين
  2. انقر فوق الصف الأخير (قم بالتمرير لأسفل إذا لزم الأمر). تفتح شاشة التفاصيل.
  3. ارجع إلى قائمة العناوين.
  4. باستخدام قائمة الدرج ، انتقل إلى "جمعياتي".
  5. كرر من الخطوة 1.
    يستغرق الأمر بضع حلقات ولكن عاجلاً أم آجلاً يتعطل في الخطوة 3 باستخدام ObjectDisposedException
    تم الاختبار على Samsung Tab S2 (Android 7) و LG Flex2 (Android 6). المحاكي مع Android 7.0 - نفس التعطل.

استغرق حوالي 10 تكرارات على محاكي 8.0 لتعطل.

بدأت أرى هذا في Xamarin.Forms 3.0 و 3.1 Pre
Stack Trace JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Android.Graphics.Bitmap'. JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) JniPeerMembers+JniInstanceMethods.InvokeAbstractVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) Bitmap.Recycle () ButtonDrawable.Reset () ButtonDrawable.Dispose (System.Boolean disposing) Object.Dispose () ButtonBackgroundTracker.Dispose (System.Boolean disposing) ButtonBackgroundTracker.Dispose () ButtonRenderer.Dispose (System.Boolean disposing) Object.Dispose () VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) Object.Dispose () ListViewRenderer.ClearRenderer (Android.Views.View renderedView) ListViewRenderer.Dispose (System.Boolean disposing) Object.Dispose () VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) Object.Dispose () VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) Object.Dispose () VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) PageRenderer.Dispose (System.Boolean disposing) Object.Dispose () FragmentContainer.OnDestroyView () Fragment.n_OnDestroyView (System.IntPtr jnienv, System.IntPtr native__this) (wrapper dynamic-method) System.Object.7749783a-08da-40f9-a1ba-680c166f64ec(intptr,intptr)

نفس ... تم الحصول على العديد من هؤلاء في لوحة معلومات خطأ مركز التطبيقات. لست متأكدًا تمامًا من كيفية التكاثر بشكل موثوق.

نفس المشكلة هنا. يحدث (ليس باستمرار) عند التنقل نحو مثيل جديد لصفحة تحتوي على ListView مع ViewCells مخصصة. تمت إزالة الصفحة مسبقًا من حزمة التنقل في حالتي.

  1. إنشاء "الصفحة X" باستخدام ListView - يتم تصفية ListView ، وتغييرها قليلاً ؛
  2. تمت إزالة "الصفحة X" من حزمة التنقل ؛
  3. تم إنشاء مثيل جديد من "الصفحة X" => تعطل عند الانتقال إلى "الصفحة X"

هذا هو بالضبط الإعداد الخاص بي أيضا.

يوم الأربعاء 16 مايو 2018 الساعة 4:06 صباحًا Samih Alkeilani [email protected]
كتب:

نفس المشكلة هنا. يحدث (ليس باستمرار) عند التنقل نحو a
مثيل جديد لصفحة (تحتوي على ListView مع ViewCells مخصصة)
تم إنشاء مثيل له بالفعل مرة واحدة على الأقل. تمت إزالة الصفحة من قبل من
مكدس التنقل في حالتي.

  1. إنشاء "الصفحة X" مع ListView - يتم تصفية ListView ، وتغيير أ
    بعض الشيء؛
  2. تمت إزالة "الصفحة X" من حزمة التنقل ؛
  3. تم إنشاء مثيل جديد من "الصفحة X" => تعطل عند الانتقال إلى
    "الصفحة X"

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/xamarin/Xamarin.Forms/issues/2004#issuecomment-389432174 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AEbY-r6bKZYHYsqKR8DStkZO4cLc6NLCks5ty93_gaJpZM4SZ0sv
.

لقد أعدت إظهار المشكلة يدويًا عن طريق تشغيل مجموعة القمامة يدويًا ( GC.Collect(); ) بعد تعيين ItemSource في ListView وربما أكون قد قمت بحلها (_ ليتم تأكيدها على أنها متقطعة _) عن طريق الاتصال بـ GC.Collect(); أول شيء عندما أقوم بذلك احصل على الصفحة (مُنشئ ViewModel in my case_).

  • ربما يتم إجراء عملية جمع البيانات المهملة بشكل دوري في "وقت غير صحيح" ويتم تجنب هذا السلوك عن طريق القيام بذلك يدويًا؟

هل تعمل من أجلك؟

لقد أصبت أيضًا بنفس الانهيار ، فيرجى إبلاغي بأي حل

أعضاء JniPeerandroid.runtime.JavaProxyThrowable: System.ObjectDisposedException: لا يمكن الوصول إلى كائن تم التخلص منه.

سبب Xamarin: android.runtime.JavaProxyThrowable: System.ObjectDisposedException: لا يمكن الوصول إلى كائن تم التخلص منه.
اسم الكائن: "Android.Graphics.Bitmap".
Java.Interop.JniPeerMembers.AssertSelf (IJavaPeerable self) <7bd6e23e74244e9191c46983d3bb2eeb>: 0
Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeAbstractVoidMethod (string encodedMember، IJavaPeerable self، JniArgumentValue * parameters) <7bd6e23e74244e9191c46983d3bb2eeb>: 0
Android.Graphics.Bitmap.Recycle () <82958282c7e341b985c12639e88fc1d1>: 0
Xamarin.Forms.Platform.Android.ButtonDrawable.Reset () <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Xamarin.Forms.Platform.Android.ButtonDrawable.Dispose (منطقي التخلص) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Java.Lang.Object.Dispose () <82958282c7e341b985c12639e88fc1d1>: 0
Xamarin.Forms.Platform.Android.ButtonBackgroundTracker.Dispose (منطقي) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Xamarin.Forms.Platform.Android.ButtonBackgroundTracker.Dispose () <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Xamarin.Forms.Platform.Android.ButtonRenderer.Dispose (منطقي) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Java.Lang.Object.Dispose () <82958282c7e341b985c12639e88fc1d1>: 0
Xamarin.Forms.Platform.Android.VisualElementRenderer. التخلص (التخلص المنطقي) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Xamarin.Forms.Platform.Android.PageRenderer.Dispose (منطقي) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Java.Lang.Object.Dispose () <82958282c7e341b985c12639e88fc1d1>: 0
Xamarin.Forms.Platform.Android.AppCompat.FragmentContainer.OnDestroyView () <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Android.Support.V4.App.Fragment.n_OnDestroyView (IntPtr jnienv، IntPtr native__this) <40bb5a57295c4f648daa62e9e7aa774b>: 0
في (طريقة الغلاف الديناميكي) System.Object.84698d0a-0c20-40fc-87af-f3c645d9eec0 (intptr، intptr)
md58432a647068b097f9637064b8985a5e0.FragmentContainer.n_onDestroyView (الطريقة الأصلية)
md58432a647068b097f9637064b8985a5e0.FragmentContainer.onDestroyView () FragmentContainer. جافا: 59
android.support.v4.app.Fragment.performDestroyView () جزء. جافا: 2590
android.support.v4.app.FragmentManagerImpl.moveToState () FragmentManager. جافا: 1503
android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState () FragmentManager. جافا: 1740
android.support.v4.app.BackStackRecord.executeOps () BackStackRecord. جافا: 794
android.support.v4.app.FragmentManagerImpl.executeOps () FragmentManager. جافا: 2580
android.support.v4.app.FragmentManagerImpl.executeOpsTogether () FragmentManager. جافا: 2367
android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute () FragmentManager. جافا: 2322
android.support.v4.app.FragmentManagerImpl.execPendingActions () FragmentManager. جافا: 2229
android.support.v4.app.FragmentManagerImpl $ 1.run () FragmentManager. جافا: 700
android.os.Handler.handleCallback () معالج. جافا: 739
android.os.Handler.dispatchMessage () معالج. جافا: 95
android.os.Looper.loop () Looper. جافا: 168
android.app.ActivityThread.main () ActivityThread. جافا: 5845
java.lang.reflect.Method.invoke (الطريقة الأصلية)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run () ZygoteInit. جافا: 797
com.android.internal.os.ZygoteInit.main () ZygoteInit. جافا: 687

يحدث فقط على Android (تم اختباره على Samsung Galaxy S6 - Android 7.0) ، أحيانًا بعد دقيقتين ، وأحيانًا يعمل لساعات دون تعطل.
أنا لا أستخدم ListView ، أعتقد أنه كان مرتبطًا بـ OnPropertyChanged ولا يعمل على مؤشر ترابط واجهة المستخدم ، لذا حاولت:

#if __ANDROID__
            if (Android.OS.Looper.MyLooper() != null && Android.OS.Looper.MyLooper().Thread == Android.OS.Looper.MainLooper.Thread)
            {
                changed.Invoke(this, new PropertyChangedEventArgs(propertyName));
            }
            else
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    changed.Invoke(this, new PropertyChangedEventArgs(propertyName));
                });
            }
#endif

ولكن حتى تشغيله على مؤشر ترابط واجهة المستخدم لا يحل المشكلة.

Unhandled Exception:
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Xamarin.Forms.Platform.Android.FormsTextView'.
  at (wrapper dynamic-method) System.Object:a3b623bc-af3e-44cb-ae90-81e9b2c34eb0 (intptr,intptr)
[ERROR] FATAL UNHANDLED EXCEPTION: System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Xamarin.Forms.Platform.Android.FormsTextView'.
  at (wrapper dynamic-method) System.Object:a3b623bc-af3e-44cb-ae90-81e9b2c34eb0 (intptr,intptr)


05-28 14:06:36.211  Samsung SM-G920F    Error   23539   AndroidRuntime  Object name: 'Xamarin.Forms.Platform.Android.FormsTextView'.
  at Java.Interop.JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) [0x00029] in <e8c0e16a54534fa885244f0ad837c79e>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00000] in <e8c0e16a54534fa885244f0ad837c79e>:0 
  at Android.Widget.TextView.set_TextFormatted (Java.Lang.ICharSequence value) [0x00029] in <848bbd7c681a4975918c72f17d2f5144>:0 
  at Android.Widget.TextView.set_Text (System.String value) [0x0000d] in <848bbd7c681a4975918c72f17d2f5144>:0 
  at Xamarin.Forms.Platform.Android.LabelRenderer.UpdateText () [0x00098] in <aae4e9ce5a5b4d3eaec4edf21079f3fa>:0 
  at Xamarin.Forms.Platform.Android.LabelRenderer.OnElementPropertyChanged (System.Object sender, System.ComponentModel.PropertyChangedEventArgs e) [0x000c5] in <aae4e9ce5a5b4d3eaec4edf21079f3fa>:0 
  at (wrapper delegate-invoke) <Module>:invoke_void_object_PropertyChangedEventArgs (object,System.ComponentModel.PropertyChangedEventArgs)
  at Xamarin.Forms.BindableObject.OnPropertyChanged (System.String propertyName) [0x00012] in <1aabc0fecdaa41b6a5c04760c77bb648>:0 
  at Xamarin.Forms.Element.OnPropertyChanged (System.String propertyName) [0x00000] in <1aabc0fecdaa41b6a5c04760c77bb648>:0 
  at Xamarin.Forms.BindableObject.SetValueActual (Xamarin.Forms.BindableProperty property, Xamarin.Forms.BindableObject+BindablePropertyContext context, System.Object value, System.Boolean currentlyApplying, Xamarin.Forms.Internals.SetValueFlags attributes, System.Boolean silent) [0x0010e] in <1aabc0fecdaa41b6a5c04760c77bb648>:0
  at Xamarin.Forms.BindableObject.SetValueCore (Xamarin.Forms.BindableProperty property, System.Object value, Xamarin.Forms.Internals.SetValueFlags attributes, Xamarin.Forms.BindableObject+SetValuePrivateFlags privateAttributes) [0x0015b] in <1aabc0fecdaa41b6a5c04760c77bb648>:0 
  at Xamarin.Forms.BindingExpression.ApplyCore (System.Object sourceObject, Xamarin.Forms.BindableObject target, Xamarin.Forms.BindableProperty property, System.Boolean fromTarget) [0x001f9] in <1aabc0fecdaa41b6a5c04760c77bb648>:0 
  at Xamarin.Forms.BindingExpression.Apply (System.Boolean fromTarget) [0x0003e] in <1aabc0fecdaa41b6a5c04760c77bb648>:0 
  at Xamarin.Forms.BindingExpression+BindingExpressionPart.<PropertyChanged>b__47_0 () [0x00000] in <1aabc0fecdaa41b6a5c04760c77bb648>:0 
  at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in <848bbd7c681a4975918c72f17d2f5144>:0 
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <848bbd7c681a4975918c72f17d2f5144>:0 
  at (wrapper dynamic-method) System.Object:c9b101f5-2323-49dd-9e53-f56cac4b4160 (intptr,intptr)
    at mono.java.lang.RunnableImplementor.n_run(Native Method)
    at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6682)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

أواجه مشاكل في إعادة إنتاج هذا مع العينة المرفقة. أي شخص لديه استنساخ أفضل وموثوق؟

يمكنك محاولة إضافة عرض قائمة مع قالب بيانات يعرض الصور. افتح الصفحة وأغلقها أو قم بالتبديل إلى صفحات أخرى. افعلها عدة مرات. قد يعيد إنتاج المشكلة. شكر

hannahdo ما الجهاز و api؟ هل يمكن أن تخبرني أيضًا أن إصدار Xamarin.Android ، هل تستخدم VS أو VS4Mac ، تحديث القناة الثابتة؟
شكر

كاتربيلار CAT S41 (Android V7.0)
أنا أستخدم VS2017 مع آخر التحديثات.

بالمناسبة ، تحتاج إلى التمرير في عرض القائمة إذا كنت لا تزال غير قادر على إعادة إنتاجه. قد يساعد ذلك. شكر

لا يظهر فقط في ListView بالمناسبة.
لقد غيرت واجهة المستخدم الخاصة بي لسبب آخر ولم يعد الخطأ يظهر

كان لدينا هذا عادةً عندما انتقلنا من المستوى الأول من التطبيق (أشرطة علامات التبويب) صفحة واحدة لأسفل على سبيل المثال في الإعدادات ثم العودة. لكنها تحدث كل 8 مرات أو نحو ذلك. بقدر ما يمكننا اكتشاف ذلك ، حدث ذلك عندما تم استدعاء OnNotifyPropertyChanged.

في النهاية ابتعدنا عن ObservableCollections وقمنا بتنفيذ شيء يعتمد على الأحداث. ليست أنيقة تمامًا ولكنها تعمل حتى الآن.

لقد اتبعت الخطوات ، وفتح الرئيسي ، وانتقل إلى القائمة ، وانتقل إلى القائمة لأسفل ، وانقر ، وانتقل إلى التفاصيل ، وانقر فوق رمز MDP ، والعودة إلى الصفحة 1 ، وأيقونة mdp ، انتقل إلى الصفحة مع القائمة وقم بالتمرير ، وانقر وكرر .. مثل 20 مرات ، ولا تحطم. لا أمتلك هذا الجهاز ، فأنا أستخدم Pixel 2

تم إصلاح هذا في أحدث 3.1.0 مستقرة. يرجى إعادة الفتح إذا كنت لا تزال تجد هذه المشكلة.

أنا أؤكد أن هذا يبدو بالفعل وكأنه ثابت في 3.1.0.583944. جميع اختبارات Android الآلية قبل التشغيل قيد الاكتمال ، بينما كانت تتعطل بشكل روتيني بسبب هذا الخطأ في إصدارات XF السابقة.

أنا في 3.1.0.583944 وما زال يرمي ObjectDisposedException من حين لآخر.

يوضح لي مركز التطبيقات تلقي هذا الخطأ نفسه 4 مرات مختلفة على 4 أجهزة مختلفة باستخدام Xamarin Forms 3.1.0.583944:

جالكسي S9
LG G5
كومة
جالكسي S7

JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self)
System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Android.Graphics.Bitmap'.

JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self)
JniPeerMembers+JniInstanceMethods.InvokeAbstractVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters)
Bitmap.Recycle ()
ButtonDrawable.Reset ()
ButtonDrawable.Dispose (System.Boolean disposing)
Object.Dispose ()
ButtonBackgroundTracker.Dispose (System.Boolean disposing)
ButtonRenderer.Dispose (System.Boolean disposing)
Object.Dispose ()
VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing)
Object.Dispose ()
VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing)
Object.Dispose ()
VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing)
PageRenderer.Dispose (System.Boolean disposing)
Object.Dispose ()
FragmentContainer.OnDestroyView ()
Fragment.n_OnDestroyView (System.IntPtr jnienv, System.IntPtr native__this)

    (wrapper dynamic-method) System.Object.3aee9241-dd5c-464a-81b3-c638c559d638(intptr,intptr)

كنا نشهد تحطمًا مشابهًا مع عرض تمرير يحتوي على أزرار ، من بين مكونات أخرى. قمنا بتضييق نطاق المشكلة على الأزرار ، ثم اكتشفنا أن الأزرار كانت بها طريقة التخلص التي تسمى بعد أن تخلصنا منها بالفعل من Android ، وبالتالي تم طرح الاستثناء. لقد تجاوزنا طريقة التخلص في كل من عارضين ScrollView و Button لمحاولة التخلص ، ولكننا نلاحظ الاستثناء. لدينا بعض القلق من أن هذا قد يؤدي إلى حدوث تسريب ، ولكن يبدو أن Android قد حرر الموارد بالفعل (وأن تسربًا صغيرًا للذاكرة أفضل من تعطل التطبيق في هذه المرحلة). نحن نستخدم Xamarin.Forms 3.1.0.583944 و VS2017.

""
التخلص من باطل التجاوز المحمي (التخلص المنطقي)
{
محاولة
{
القاعدة. التخلص (التخلص) ؛
}
catch (استثناء هـ)
{
Console.WriteLine ("تم معالجة الاستثناء.")؛
Console.WriteLine (الرسالة الإلكترونية) ؛
}
}

@ danger4386 ، أنا

duzenko هل يتم الرمي بنفس المكدس كما فتحت هذه المشكلة في البداية؟

@ BillyMartin1964 تتجلى هذه المشكلة في عدة طرق مختلفة. هل لديك نموذج صغير عن طريق الصدفة حتى نتمكن من رؤية حالة الاستخدام الخاصة بك؟

PureWeen ، أخشى أن يكون من الصعب

@ BillyMartin1964 ماذا عن مخطط تقريبي؟ عند النظر إلى تتبع المكدس الخاص بك ، هناك 3 أو 4 أشياء مختلفة تتسبب في التخلص من FragmentContainer ، لذا فأنا أشعر بالفضول فقط بشأن ما يحدث لك. ، هل تستخدم أيضًا أي عارضين مخصصين بالفعل؟ قد يكون هذا أمرًا صعبًا لتصحيحه لأنه في بعض الأحيان تأتي المشكلة من عدم قيام المستخدم بالتخلص بشكل صحيح من الموارد في أجهزة العرض المخصصة الخاصة به.

@ BillyMartin1964 نعم ، نحن نستخدم عارض زر مخصص لجميع الأزرار في تطبيقنا. أزلنا العارض المخصص وما زلنا نشاهد التعطل مع ObjectDisposedException عند الانتقال للخلف من صفحة باستخدام زر. هذا هو المصدر الكامل لـ CustomButtonRenderer. كل ما يتغير هو التقاط ObjectDisposedException في استدعاء Dispose. سألاحظ هنا أن الحصول على هذا الاستثناء متقطع ، وأحيانًا قد يتعطل في المرة الأولى عند التنقل للخلف ، ولكن في معظم الأحيان قد يستغرق الأمر عدة انتقالات (أحيانًا أكثر من 20 أو 30 مرة للتنقل إلى الصفحة باستخدام الزر والعودة) إلى انظر الى المشكلة.

""
باستخدام النظام ؛
باستخدام Android.Content ؛
باستخدام NeedsGap.Droid.Renderers ؛
باستخدام Xamarin.
باستخدام Xamarin.Forms.Platform.Android ؛

[التجميع: ExportRenderer (typeof (Button) ، typeof (CustomButtonRenderer))]
NeedsGap.Droid.Renderers
{
فئة عامة CustomButtonRenderer: ButtonRenderer
{
CustomButtonRenderer العام (سياق سياق): أساس (سياق)
{
}

    protected override void Dispose(bool disposing)
    {
        try
        {
            base.Dispose(disposing);
        }
        catch (ObjectDisposedException)
        {
        }
    }
}

}

يمكنني تكرار هذا في مشروع أساسي بدون أي عارض مخصص ، إلخ.
disp2.zip
انقر فوق زر الاختبار التلقائي وسيتعطل التطبيق دائمًا بعد بضع دورات تنقل.
ما الذي يجب القيام به هنا لإعادة فتح هذا الخطأ؟

duzenko ما الجهاز؟ API؟ هل تختبر؟ قمت بتشغيل مشروعك على عدة أجهزة عدة مرات ولم أتلق أي أعطال حتى الآن. إنه دائمًا ما يصل إلى مربع الحوار "اكتمل الاختبار" بالنسبة لي

Samsung Tab S2 ، أندرويد 7.0.
تحطم في كل مرة.

في يوم الاثنين ، 16 يوليو ، 2018 ، الساعة 19:16 ، كتب Shane Neuville [email protected] :

duzenko https://github.com/duzenko ما الجهاز؟ API؟ هل تختبر
على؟ قمت بتشغيل مشروعك على عدة أجهزة عدة مرات ولم أتلقه
أي أعطال حتى الآن. إنه دائمًا ما يصل إلى مربع الحوار "اكتمل الاختبار" بالنسبة لي

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/xamarin/Xamarin.Forms/issues/2004#issuecomment-405302207 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ABacT-s4FrpxF2Jv_jTgYCBdCP979FeLks5uHLxlgaJpZM4SZ0sv
.

تم إنشاء محاكي android جديد يعتمد على Nexus 10.
تحطمت في أول اختبار تشغيل.
image
مرة أخرى ، ما الذي يجب علي فعله لإعادة فتح هذا الخطأ؟
إنه أمر بالغ الأهمية. يتعطل التطبيق عندما يتنقل المستخدمون ببساطة في الصفحات ، مع عدم توفر حل بديل.

راجع للشغل إنه يتسرب حوالي 20 كيلو بايت في كل صفحة تنقل في هذه الصفحة البسيطة. في الإنتاج لدي صفحات بها صور وتسريب 500 كيلوبايت لكل صفحة.

أعتقد أنني أتخلى عن Xamarin.Forms إلى الأبد. لقد أهدرت حشراتك الكثير من وقتي وزملائي في العمل. لقد مرت 4.5 شهر منذ تقرير الخطأ الأصلي.
ها هي لقطة تسريب الذاكرة. لا يقوم GestureManager أو ListViewRenderer بإلغاء اشتراك نفسه من حدث. راجع للشغل ، الإصدار الحالي من ملف التعريف مكسور. اتصل بي عبر البريد الإلكتروني إذا كنت مهتمًا (لا أعتقد ذلك).
image

duzenko حسنًا ، لقد أخرجت جهاز Android قديمًا وأستطيع إعادة إنشائه هناك باستمرار !!!

متحمس جدا لذلك. لقد كان هذا الأمر مؤلمًا لبعض الوقت ، لذا فأنا أقدر حقًا التأنيب والتشبث بي في هذا الأمر.

مرحبا،

هل تم إصلاح الخلل أم أن الإصلاح قيد التشغيل؟

أي أخبار عن هذا؟ إنه خطأ كبير التأثير يبدو أنه كان دائمًا موجودًا

opcodewriter هو جدول زمني للسباق الحالي ، لذا ما لم يحدث شيء غير متوقع سيتم إصلاحه قريبًا

duzenko @ Bhauraj001opcodewriter الذي تستخدمه عارضين سريع؟

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/internals/fast-renderers
إذا لم يكن الأمر كذلك ، يمكنك أن تحاول إخباري إذا كنت لا تزال ترى الحادث؟

إذا كنت تستخدم عارضين مخصصين ، فلن يستخدم هؤلاء برامج عرض سريعة (لمعلوماتك فقط) حتى إذا قمت بتمكينهم عبر العلامات

PureWeen لدي نفس المشكلة.

جربت اقتراحك لتمكين برامج العرض السريعة ، لكنها لم تحل العطل. على العكس تمامًا - فقد رمز في ViewCell الخاص بـ ListView ، ولكن من المحتمل أن تكون هذه قصة لمشكلة أخرى.

تضمين التغريدة
أنا أستخدم عارضين مخصصين في تطبيق الإنتاج الخاص بي ، لذا لن أحاول حتى تجربة أجهزة العرض السريعة.

675008-a8787d50-7960-4c0c-9876-359a3f85e123 1

تضمين التغريدة
حول الموضوع الذي تتأثر به الأجهزة وواجهات برمجة التطبيقات ، فيما يلي بعض البيانات المأخوذة من مركز التطبيقات.

إجمالي المستخدمين المتأثرين خلال الشهر الماضي: 27
إنه ليس عددًا كبيرًا من المستخدمين ، ولكن عادةً ما يقوم المستخدمون المتأثرون بالأعطال بإلغاء تثبيت تطبيقنا و / أو كتابة تعليقات سيئة على المتاجر .. وهذا أمر مؤلم.

الجهاز الأكثر تضررا

الجهاز | النسبة المئوية
------- | -------------
جالاكسي اس 8 | 40.0٪
جالاكسي اس 7 ايدج | 20.0٪
ص 10 | 13.3٪
جالكسي S9 + | 13.3٪
آخرون | 13.3٪

API الأكثر تضررا

API | النسبة المئوية
------- | -------------
26 | 51.9٪
24 | 33.3٪
23 | 11.1٪
22 | 3.7٪

تبدأ إصدارات نظام التشغيل Android المتأثرة من 5.1.1 حتى 8.0.0. في الواقع ، يتأثر كل إصدار ندعمه (5.x و 6.x و 7.x و 8.x).

الأجهزة المتأثرة: Huawei P10 و Huawei P10 lite و Huawei Honor 5C و Samsung Galaxy S6 إلى S9 (بما في ذلك إصدارات + و edge) و Samsung Galaxy A5 و Wiko Jerry 2 و HTC U Play و Fairphone FP2 و Sony Xperia Z5.

نقوم بتحديث Xamarin.Forms وحزم NuGet ذات الصلة بانتظام (قناة مستقرة فقط). نحن الآن نستخدم:
Xamarin.Forms الإصدار 3.1.0.697729
Xamarin.Android.Support.x v.27.0.2.1

يعد Visual Studio 2017 محدثًا دائمًا (أي وقت كتابة هذا التقرير 15.7.6).

ما يضر أكثر هو سمعتي مع العميل.
خلال أشهر Xamarin لم يفعل شيئًا حيال هذا الخطأ (وإغلاقه بدون سبب في 28 حزيران (يونيو)) ، تعطل تطبيقنا عدة مرات في أيدي العميل أثناء القيام بأشياء أساسية ، مثل التنقل في الصفحات أو التقاط صورة. يراني العميل الآن ، بصفتي مبرمجًا ، رابطًا ضعيفًا في قسم البرمجيات. سيستغرق الأمر مني أيامًا لتتبع سجلات الأعطال على تطبيق الهوكي لهذا الخطأ. لقد أبلغت عن 10 أخطاء xamarin هذا العام وحده ، ناهيك عن المعاناة من الأخطاء التي أبلغ عنها الآخرون. في كل مرة أقول فيها "إنه خطأ Xamarin ، أبلغتهم به ، لكن مرت N أشهر ولا إجابة" إنه يجعلني أبدو أسوأ في عيونهم.
شكرا جزيلا يا Xamarin!

ها هي الحزمة nuget من العلاقات العامة

Xamarin.Forms.3.3.0.726028.zip

إذا كان أي شخص يريد الاختبار

لقد قمت بتشغيل هذا من خلال حالات الإنجاب التي لدي ولم أعد أرى الاستثناء بعد الآن. يجب أن يكون متاحًا في التغذية الليلية هذا الأسبوع أيضًا إذا كنت تريد انتظار ذلك.

duzenko هل قامت حزمة NuGet الخاصة بـ PureWeen بإصلاح المشكلة لك؟

بعد التحديث ، ما زلت أحصل على الاستثناء التالي:

Unhandled Exception:

System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Android.Graphics.Bitmap'.

08-08 08:40:08.082 D/Mono    (18751): DllImport attempting to load: '/system/lib/liblog.so'.[0:] ===> ERROR (AndroidEnvironment_UnhandledExceptionRaiser, 157): System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Android.Graphics.Bitmap'.
  at Java.Interop.JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) [0x00029] in <7802aa64ad574c33adca332a3fa9706a>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualInt32Method (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00000] in <7802aa64ad574c33adca332a3fa9706a>:0 
  at Android.Graphics.Bitmap.get_Height () [0x0000a] in <263adecfa58f4c449f1ff56156d886fd>:0 
  at Xamarin.Forms.Platform.Android.ButtonDrawable.Draw (Android.Graphics.Canvas canvas) [0x00021] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\ButtonDrawable.cs:66 
  at Android.Graphics.Drawables.Drawable.n_Draw_Landroid_graphics_Canvas_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_canvas) [0x0000f] in <263adecfa58f4c449f1ff56156d886fd>:0 
  at (wrapper dynamic-method) System.Object.8a38ea5e-9428-4c53-ab85-cd8fb72a22d6(intptr,intptr,intptr) (...\MainActivityAppCompat.cs)

08-08 08:40:08.085 D/Mono    (18751): DllImport loaded library '/system/lib/liblog.so'.
08-08 08:40:08.085 D/Mono    (18751): DllImport searching in: '/system/lib/liblog.so' ('/system/lib/liblog.so').
08-08 08:40:08.085 D/Mono    (18751): Searching for '__android_log_print'.
08-08 08:40:08.085 D/Mono    (18751): Probing '__android_log_print'.
08-08 08:40:08.085 D/Mono    (18751): Found as '__android_log_print'.
08-08 08:40:08.089 I/MonoDroid(18751): UNHANDLED EXCEPTION:
08-08 08:40:08.122 I/MonoDroid(18751): System.ObjectDisposedException: Cannot access a disposed object.
08-08 08:40:08.122 I/MonoDroid(18751): Object name: 'Android.Graphics.Bitmap'.
08-08 08:40:08.122 I/MonoDroid(18751):   at Java.Interop.JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) [0x00029] in <7802aa64ad574c33adca332a3fa9706a>:0 
08-08 08:40:08.122 I/MonoDroid(18751):   at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualInt32Method (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00000] in <7802aa64ad574c33adca332a3fa9706a>:0 
08-08 08:40:08.122 I/MonoDroid(18751):   at Android.Graphics.Bitmap.get_Height () [0x0000a] in <263adecfa58f4c449f1ff56156d886fd>:0 
08-08 08:40:08.122 I/MonoDroid(18751):   at Xamarin.Forms.Platform.Android.ButtonDrawable.Draw (Android.Graphics.Canvas canvas) [0x00021] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\ButtonDrawable.cs:66 
08-08 08:40:08.122 I/MonoDroid(18751):   at Android.Graphics.Drawables.Drawable.n_Draw_Landroid_graphics_Canvas_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_canvas) [0x0000f] in <263adecfa58f4c449f1ff56156d886fd>:0 
08-08 08:40:08.122 I/MonoDroid(18751):   at (wrapper dynamic-method) System.Object.8a38ea5e-9428-4c53-ab85-cd8fb72a22d6(intptr,intptr,intptr)
08-08 08:40:08.240 W/zygote  (18751): JNI RegisterNativeMethods: attempt to register 0 native methods for android.runtime.JavaProxyThrowable
08-08 08:40:08.263 D/Mono    (18751): DllImport searching in: '__Internal' ('(null)').
08-08 08:40:08.263 D/Mono    (18751): Searching for 'java_interop_jnienv_throw'.
08-08 08:40:08.263 D/Mono    (18751): Probing 'java_interop_jnienv_throw'.
08-08 08:40:08.263 D/Mono    (18751): Found as 'java_interop_jnienv_throw'.
An unhandled exception occured.

Encountered EGL error 12289 EGL_NOT_INITIALIZED during rendering08-08 08:40:14.910 E/mono    (18751): 

08-08 08:40:14.910 E/mono    (18751): Unhandled Exception:
08-08 08:40:14.910 E/mono    (18751): System.ObjectDisposedException: Cannot access a disposed object.
08-08 08:40:14.910 E/mono    (18751): Object name: 'Android.Graphics.Bitmap'.
08-08 08:40:14.910 E/mono    (18751):   at (wrapper dynamic-method) System.Object.8a38ea5e-9428-4c53-ab85-cd8fb72a22d6(intptr,intptr,intptr)
08-08 08:40:14.910 E/mono-rt (18751): [ERROR] FATAL UNHANDLED EXCEPTION: System.ObjectDisposedException: Cannot access a disposed object.
08-08 08:40:14.910 E/mono-rt (18751): Object name: 'Android.Graphics.Bitmap'.
08-08 08:40:14.910 E/mono-rt (18751):   at (wrapper dynamic-method) System.Object.8a38ea5e-9428-4c53-ab85-cd8fb72a22d6(intptr,intptr,intptr)
08-08 08:40:14.914 D/        (18751): HostConnection::get() New Host Connection established 0x8cf0a800, tid 18751
08-08 08:40:14.951 E/EGL_emulation(18751): tid 18785: eglSwapBuffers(1809): error 0x3001 (EGL_NOT_INITIALIZED)
08-08 08:40:14.952 F/OpenGLRenderer(18751): Encountered EGL error 12289 EGL_NOT_INITIALIZED during rendering
08-08 08:40:14.952 F/libc    (18751): Fatal signal 6 (SIGABRT), code -6 in tid 18785 (RenderThread), pid 18751 (ry.) 

سأختبرها عند الإفراج عنها علنًا.

RedasP

عند الاختبار ، هل يمكنك حذف bin / obj وأيضًا إلغاء تثبيت التطبيق من الجهاز الذي تختبره؟

إذا كنت تختبر حزمة nuget التي أرفقتها؟

بالنظر إلى الاستثناء الخاص بك ، تبدو أرقام الأسطر متوافقة مع إصدار سابق وليس nuget.

عندما اختبرت الكتلة المعدنية ، كان هذا ما كان علي فعله للتأكد من أنها تستخدم الأحدث والأفضل. إذا كنت لا تزال تواجه مشكلات ، فهل هناك نسخة يمكن أن تعطينيها؟

PureWeen إنه يعمل الآن بعد أن أحاول اقتراحك. شكرا لك. 👍

RedasP
من الرائع سماع ذلك!

في ملاحظة جانبية ، يبدو أن السبب الأساسي لهذا يرجع إلى خطأ في Mono GC.
نحن نجمع مشكلة لفريق Mono وسأرتبط بها بمجرد إنشائها

https://github.com/xamarin/xamarin-android/issues/2049

جزء واحد لتدوينه كحل بديل

لحل المشكلة ، أضف ملف environment.txt إلى المشروع باستخدام إجراء إنشاء بيئة Android:

MONO_GC_PARAMS = تنفيذ الجسر = قديم
باستخدام تطبيق GC القديم ، لا يحدث العطل!

شكرًا لك على المضي قدمًا في هذه المشكلة

قد تساعد إضافة [CachingStrategy = "RecycleElement"] إلى عرض القائمة على حل المشكلة.

ItemTemplate = "{StaticResource xxx}" HasUnevenRows = "صحيح"
HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand" BackgroundColor = "فوشيا">

وتجنب تعيين ItemSource إلى null فقط امسحه ().

@ cramirez070506 CachingStrategy="RecycleElement" لا يساعد في منع المشكلة

PureWeen لدينا هذه المشكلة على الرغم من إضافة البيئة.

NPadrutt يمكنك تجربة https://www.nuget.org/packages/Xamarin.Forms/3.2.0.729530-pre2
إذا كنت لا تزال ترى الخطأ ، فهل يمكنك لصق تتبع مكدس؟

كان علينا إنشاء بعض الحلول السيئة لإخراج البرنامج من الباب. لكنني سأجربها بمجرد إعادة تشكيل الكود.

تضمين التغريدة إذا كان لديك أي تتبعات مكدس حول الاستثناء الذي كنت تراه فسيكون ذلك مفيدًا :-) المشكلة هي أن هذا الاستثناء هو في الأساس نفس الحصول على NRE لذلك من الصعب تحديد ما إذا كان مثلك الخاص مرتبطًا بهذا أم لا

م ح ، فهمت. سأخبرك عندما أعرف المزيد :)

تضمين التغريدة

يبدو أن الاختبارات الأولية 3.2.0.729530-pre2 قد أصلحت هذه المشكلة في السيناريو الخاص بي !!! : مبتسم:

شكرا جزيلا ونتطلع إلى GA. 👍

نرى أيضًا العديد من هؤلاء في App Center ويقوم المستخدمون بالإبلاغ عن الأعطال ، لذلك اعتقدت أنني سأضيف Stacktrace ..

يحتوي Stacktrace على مراجع Xamarin.Forms.BindableProperty - ولا أرى أي أثر للكود الخاص بنا. لست متأكدًا مما إذا كان هذا هو نفس السيناريو المذكور على أنه ثابت في 3.2.0.729530-pre2 (؟)

JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self)
System.ObjectDisposedException: لا يمكن الوصول إلى كائن تم التخلص منه. اسم الكائن: "Android.Graphics.Bitmap".

JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self)
JniPeerMembers + JniInstanceMethods.InvokeAbstractVoidMethod (System.String encodedMember، Java.Interop.IJavaPeerable self، Java.Interop.JniArgumentValue * معلمات)
صورة نقطية. إعادة التدوير ()
ButtonDrawable.Reset ()
ButtonBackgroundTracker.Reset ()
ButtonBackgroundTracker.ButtonPropertyChanged (System.Object sender، System.ComponentModel.PropertyChangedEventArgs e)
(استدعاء تفويض المجمع) .invoke_void_object_PropertyChangedEventArgs (كائن ، System.ComponentModel.PropertyChangedEventArgs)
BindableObject.OnPropertyChanged (System.String propertyName)
Element.OnPropertyChanged (System.String propertyName)
BindableObject.SetValueActual (Xamarin.Forms.BindableProperty property، Xamarin.Forms.BindableObject + BindablePropertyContext Context، System.Object value، System.Boolean nowApplying، Xamarin.Forms.Internals.SetValueFlags السمات) System.Boolean
BindableObject.SetValueCore (خاصية Xamarin.Forms.BindableProperty ، قيمة System.Object ، سمات Xamarin.Forms.Internals.SetValueFlags ، Xamarin.Forms.BindableObject + SetValuePrivateFlags privateAttributes)
BindableObject.SetValue (خاصية Xamarin.Forms.BindableProperty ، قيمة System.Object ، System.Boolean fromStyle ، System.Boolean checkAccess)
BindableObject.SetValue (خاصية Xamarin.Forms.BindableProperty ، قيمة System.Object)
Button.BorderRadiusPropertyChanged (Xamarin.Forms.BindableObject bindable، System.Object oldvalue، System.Object newvalue)
BindableObject.ClearValue (خاصية Xamarin.Forms.BindableProperty ، System.Boolean fromStyle ، System.Boolean checkAccess)
BindableObject.ClearValue (خاصية Xamarin.Forms.BindableProperty)
Setter.UnApply (Xamarin.Forms.BindableObject target، System.Boolean fromStyle)
Style.UnApplyCore (Xamarin.Forms.BindableObjectable Bindable، Xamarin.Forms.Style BasedOn)
IStyle.UnApply (Xamarin.Forms.BindableObjectable)
VisualElement + MergedStyle.SetStyle (Xamarin.Forms.IStyle implicitStyle ، System.Collections.Generic.IList`1 [T] classStyles ، Xamarin.Forms.IStyle style)
VisualElement + MergedStyle.set_Style (قيمة Xamarin.Forms.IStyle)
<.cctor> b__240_6 (Xamarin.Forms.BindableObject bindable، System.Object oldvalue، System.Object newvalue)
BindableObject.SetValueActual (Xamarin.Forms.BindableProperty property، Xamarin.Forms.BindableObject + BindablePropertyContext Context، System.Object value، System.Boolean nowApplying، Xamarin.Forms.Internals.SetValueFlags السمات) System.Boolean
BindableObject.SetValueCore (خاصية Xamarin.Forms.BindableProperty ، قيمة System.Object ، سمات Xamarin.Forms.Internals.SetValueFlags ، Xamarin.Forms.BindableObject + SetValuePrivateFlags privateAttributes)
BindingExpression.ApplyCore (System.Object sourceObject ، Xamarin.Forms.BindableObject target ، Xamarin.Forms.BindableProperty property ، System.Boolean fromTarget)
BindingExpression.Apply (نظام منطقي من الهدف)
تعبير ملزم + ملزم التعبير جزء.b__49_0 ()
خيط + RunnableImplementor.Run ()
IRunnableInvoker.n_Run (System.IntPtr jnienv ، System.IntPtr native__this)
(طريقة الغلاف الديناميكي) System.Object.8618d31c-c109-49dc-a54d-404ffc85a5ed (intptr، intptr)

ehuna التي تبدو وكأنها نفس المشكلة. يبدو تتبع المكدس هذا كعملية تنظيف عادةً ما يتم ترتيبها في قائمة الانتظار بحيث لا يرتبط التتبع مرة أخرى بكودك. إذا لم يكن خطأ Mono GC موجودًا ، فسيقوم الرمز هنا بتنظيف المورد بشكل صحيح ويكون في طريقه.

هل تبدو هذه نفس المشكلة؟

لقد حصلت على هذا الاستثناء عند النقر فوق عنصر قائمة يفتح صفحة جديدة ، ثم العودة إلى صفحة عرض القائمة ومسح عنصر يؤدي إلى البحث ويبدو أنه تم التخلص من AutoCompleteRenderer (النوع الأساسي SearchBarRenderer).

إذا قمت ببساطة بإجراء مسح ضوئي من صفحة عرض القائمة دون الانتقال إلى صفحة عناصر القائمة والعودة مرة أخرى ، فستعمل بشكل جيد.

System.ObjectDisposedException: Cannot access a disposed object.
Object name: '*.Droid.CustomRenderer.AutoCompleteRenderer'.
  at Java.Interop.JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self) [0x00029] in <e4b4fbb0c9154793acaae753fd1b4e27>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualObjectMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00000] in <e4b4fbb0c9154793acaae753fd1b4e27>:0 
  at Android.Views.View.get_Context () [0x0000a] in <c27f5eedfc1a439c9ab4935b10674f11>:0 
  at *.Droid.CustomRenderer.AutoCompleteRenderer+<>c__DisplayClass4_0.<OnElementChanged>b__0 (System.Object o, System.Object obj) [0x00000] in <acbe393a4dc3408295781bf203d9426a>:0 
  at (wrapper delegate-invoke) System.EventHandler`1[System.Object].invoke_void_object_TEventArgs(object,object)
  at *.Base.CustomControls.AutoComplete.FireSelectedItemChanged (System.Object obj) [0x00000] in <143ea12b205e435f9ed4239b70688424>:0 
  at *.Base.Views.SearchItem+<>c__DisplayClass21_1.<OnScannerDataReceived>b__1 () [0x00000] in <143ea12b205e435f9ed4239b70688424>:0 
  at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in <c27f5eedfc1a439c9ab4935b10674f11>:0 
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] in <c27f5eedfc1a439c9ab4935b10674f11>:0 
  at (wrapper dynamic-method) System.Object.41(intptr,intptr)

RedasP الاستثناء الخاص بك يبدو مختلفًا. لا يعد AutoCompleteRenderer جزءًا من إطار العمل الأساسي ، لذا من الصعب تحديد سبب الاستثناء الخاص بك. يبدو أن برنامج AutoCompleteRenderer المخصص يحتفظ بشيء لا ينبغي أن يكون عليه.

إذا كان بإمكانك إنشاء نسخة وإنشاء مشكلة ، فيمكننا النظر إليها لمعرفة ما إذا كان هناك خطأ من جانبنا أم لا

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات