Xamarin.forms: [Android] Xamarin disebabkan oleh: android.runtime.JavaProxyThrowable: System.ObjectDisposedException: Tidak dapat mengakses objek yang dibuang.

Dibuat pada 2 Mar 2018  ·  66Komentar  ·  Sumber: xamarin/Xamarin.Forms

Deskripsi

Kesalahan ini terjadi saat menavigasi di antara halaman dengan tampilan daftar baris kompleks. Karena tidak ada kode pengguna yang terlibat, tidak mungkin untuk menangkap dan menangani pengecualian.

Langkah-langkah untuk Mereproduksi

Berselang.

Perilaku yang Diharapkan

Menavigasi halaman tidak menyebabkan crash.

Perilaku Sebenarnya

Sebuah crash terjadi sesekali.

Informasi dasar

  • Versi dengan masalah: 2.5 280
  • Versi bagus terakhir yang diketahui: T / A
  • IDE: Komunitas VS2017
  • Kerangka Kerja Target Platform:

    • Android: 8.0

  • Versi Pustaka Dukungan Android: 26.1.0.1

Reproduksi

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

Pengecualian terjadi di sini

image

Jejak tumpukan

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

Komentar yang paling membantu

@duzenko baiklah saya menggali perangkat Android lama dan saya dapat membuatnya kembali di sana secara konsisten !!!

Cukup bersemangat tentang itu. Yang ini telah menyebalkan untuk beberapa waktu jadi saya sangat menghargai teguran dan bertahan dengan saya yang satu ini.

Semua 66 komentar

Harap berikan reproduksi.

Saya tidak dapat membuat produksi kami gagal setiap saat. Biasanya ini terjadi setiap saat di awal hari, tetapi ketika saya mencoba mengulanginya di aplikasi pengujian, hal itu juga berhenti terjadi di perangkat dalam build produksi.

@ rizky_dwi
Bagaimana saya bisa mengirimi Anda kode sumber aplikasi kita? Ini sumber tertutup dan saya tidak bisa begitu saja melampirkannya ke tiket ini.
Saya bisa mengulanginya sekarang sepanjang waktu di perangkat (tetapi tidak di emulator).

xp.zip
Kasus repro.
Langkah:

  1. Menggunakan menu laci, buka Daftar Alamat
  2. Klik pada baris terakhir (gulir ke bawah jika perlu). Layar detail terbuka.
  3. Kembali ke daftar Alamat.
  4. Menggunakan menu laci, buka Asosiasi Saya.
  5. Ulangi dari langkah 1.
    Dibutuhkan beberapa loop tetapi cepat atau lambat itu crash pada langkah 3 dengan ObjectDisposedException
    Diuji pada Samsung Tab S2 (Android 7) dan LG Flex2 (Android 6). Emulator dengan Android 7.0 - kerusakan yang sama.

Memerlukan sekitar 10 iterasi pada emulator 8.0 agar tidak bekerja.

Saya mulai melihat ini di Xamarin.Forms 3.0 dan 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)

Sama ... mendapatkan banyak dari ini di dasbor kesalahan Pusat Aplikasi. Tidak yakin bagaimana mereproduksi dengan andal.

Masalah yang sama di sini. Ini terjadi (tidak secara konsisten) saat menavigasi ke instance baru dari halaman yang berisi ListView dengan ViewCells kustom. Halaman sebelumnya telah dihapus dari tumpukan navigasi dalam kasus saya.

  1. Membuat "Halaman X" dengan ListView - ListView disaring, diubah sedikit;
  2. "Halaman X" dihapus dari Stack navigasi;
  3. Contoh baru "Halaman X" dibuat => macet saat menavigasi ke "Halaman X"

Ini persis pengaturan saya juga.

Pada Rabu, 16 Mei 2018, 04.06 Samih Alkeilani [email protected]
menulis:

Masalah yang sama di sini. Ini terjadi (tidak secara konsisten) saat menavigasi ke a
contoh baru halaman (berisi ListView dengan ViewCells kustom) itu
sudah dipakai setidaknya sekali. Halaman sebelumnya telah dihapus dari
tumpukan navigasi dalam kasus saya.

  1. Membuat "Halaman X" dengan ListView - ListView disaring, diubah a
    sedikit;
  2. "Halaman X" dihapus dari Stack navigasi;
  3. Instance baru dari "Halaman X" dibuat => crash saat menavigasi ke
    "Halaman X"

-
Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/xamarin/Xamarin.Forms/issues/2004#issuecomment-389432174 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AEbY-r6bKZYHYsqKR8DStkZO4cLc6NLCks5ty93_gaJpZM4SZ0sv
.

Saya mereproduksi masalah dengan secara manual memicu pengumpulan sampah ( GC.Collect(); ) setelah ItemSource ListView disetel & saya mungkin telah menyelesaikannya (_untuk dikonfirmasikan karena intermiten_) dengan memanggil GC.Collect(); hal pertama ketika saya dapatkan di halaman (konstruktor _ViewModel dalam kasus saya_).

  • Mungkinkah pengumpulan sampah secara berkala dilakukan pada "waktu yang salah" dan perilaku ini dihindari dengan melakukannya secara manual?

Apakah ini berhasil untuk Anda?

Saya juga mengalami kecelakaan yang sama, Tolong beri tahu saya jika ada solusi

JniPeerMembers.AssertSelfandroid.runtime.JavaProxyThrowable: System.ObjectDisposedException: Tidak dapat mengakses objek yang dibuang.

Xamarin disebabkan oleh: android.runtime.JavaProxyThrowable: System.ObjectDisposedException: Tidak dapat mengakses objek yang dibuang.
Nama objek: 'Android.Graphics.Bitmap'.
Java.Interop.JniPeerMembers.AssertSelf (IJavaPeerable self) <7bd6e23e74244e9191c46983d3bb2eeb>: 0
Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeAbstractVoidMethod (string encodedMember, IJavaPeerable self, parameter JniArgumentValue *) <7bd6e23e74244e9191c46983d3bb2eeb>: 0
Android.Graphics.Bitmap.Recycle () <82958282c7e341b985c12639e88fc1d1>: 0
Xamarin.Forms.Platform.Android.ButtonDrawable.Reset () <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Xamarin.Forms.Platform.Android.ButtonDrawable.Dispose (bool disposing) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Java.Lang.Object.Dispose () <82958282c7e341b985c12639e88fc1d1>: 0
Xamarin.Forms.Platform.Android.ButtonBackgroundTracker.Dispose (bool disposing) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Xamarin.Forms.Platform.Android.ButtonBackgroundTracker.Dispose () <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Xamarin.Forms.Platform.Android.ButtonRenderer.Dispose (bool disposing) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Java.Lang.Object.Dispose () <82958282c7e341b985c12639e88fc1d1>: 0
Xamarin.Forms.Platform.Android.VisualElementRenderer.Buang (membuang bool) <173f39d71f0d4d928f5bbea42e96ffa8>: 0
Xamarin.Forms.Platform.Android.PageRenderer.Dispose (bool disposing) <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
di (metode dinamis pembungkus) System.Object.84698d0a-0c20-40fc-87af-f3c645d9eec0 (intptr, intptr)
md58432a647068b097f9637064b8985a5e0.FragmentContainer.n_onDestroyView (Metode Asli)
md58432a647068b097f9637064b8985a5e0.FragmentContainer.onDestroyView () FragmentContainer. java: 59
android.support.v4.app.Fragment.performDestroyView () Fragment. java: 2590
android.support.v4.app.FragmentManagerImpl.moveToState () FragmentManager. java: 1503
android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState () FragmentManager. java: 1740
android.support.v4.app.BackStackRecord.executeOps () BackStackRecord. java: 794
android.support.v4.app.FragmentManagerImpl.executeOps () FragmentManager. java: 2580
android.support.v4.app.FragmentManagerImpl.executeOpsTogether () FragmentManager. java: 2367
android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute () FragmentManager. java: 2322
android.support.v4.app.FragmentManagerImpl.execPendingActions () FragmentManager. java: 2229
android.support.v4.app.FragmentManagerImpl $ 1.run () FragmentManager. java: 700
android.os.Handler.handleCallback () Handler. java: 739
android.os.Handler.dispatchMessage () Handler. java: 95
android.os.Looper.loop () Looper. java: 168
android.app.ActivityThread.main () ActivityThread. java: 5845
java.lang.reflect.Method.invoke (Metode Asli)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run () ZygoteInit. java: 797
com.android.internal.os.ZygoteInit.main () ZygoteInit. java: 687

Hanya terjadi di Android (diuji di Samsung Galaxy S6 - Android 7.0), terkadang setelah 2 menit, terkadang berjalan berjam-jam tanpa crash.
Saya tidak menggunakan ListView, mengira itu ditautkan ke OnPropertyChanged tidak berjalan di utas UI jadi saya mencoba:

#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

tetapi bahkan membuatnya berjalan di utas UI tidak memperbaiki masalah.

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)

Saya mengalami kesulitan untuk mereproduksi ini dengan sampel terlampir. Adakah yang memiliki reproduksi yang lebih baik dan andal?

Anda dapat mencoba menambahkan tampilan daftar dengan template data yang menampilkan gambar. Buka dan tutup halaman atau beralih ke halaman lain. Lakukan berkali-kali. Itu mungkin mereproduksi masalah. Terima kasih

@hannahdo perangkat dan api apa? dapatkah Anda memberi tahu saya juga versi Xamarin.Android, menggunakan VS atau VS4Mac, saluran stabil diperbarui?
Terima kasih

Catterpillar CAT S41 (Android V7.0)
Saya menggunakan VS2017 dengan pembaruan terkini.

Ngomong-ngomong, Anda perlu menggulir tampilan daftar jika Anda masih tidak dapat mereproduksinya. Itu mungkin membantu. Terima kasih

Itu tidak hanya muncul di ListView btw.
Saya mengubah UI saya karena beberapa alasan lain dan bug tidak muncul lagi

kami memiliki ini biasanya ketika kami menavigasi dari tingkat pertama aplikasi (bilah tab) satu halaman ke bawah misalnya ke pengaturan dan kemudian kembali. Tapi itu hanya terjadi setiap 8 kali atau lebih. Sejauh yang kami bisa mengetahuinya, itu terjadi ketika OnNotifyPropertyChanged dipanggil.

Pada akhirnya kami pindah dari ObservableCollections dan mengimplementasikan sesuatu yang lebih berbasis event. Tidak terlalu elegan tapi sejauh ini berhasil.

Saya mengikuti langkah-langkahnya, buka master, buka daftar, gulir daftar ke bawah, klik, buka detail, klik ikon MDP, kembali ke halaman 1, ikon mdp buka halaman dengan daftar dan gulir, klik dan ulangi .. seperti 20 kali, dan tidak ada crash. Saya tidak punya perangkat itu, saya menggunakan Pixel 2

Ini diperbaiki dalam stabil 3.1.0 terbaru. Harap buka kembali jika Anda masih menemukan masalah ini.

Saya mengonfirmasi bahwa ini memang tampaknya diperbaiki di 3.1.0.583944. Semua pengujian otomatis pra-peluncuran Android saya berjalan hingga selesai, sedangkan pengujian tersebut secara rutin mengalami error ini di versi XF sebelumnya.

Saya menggunakan 3.1.0.583944 dan kadang-kadang masih menampilkan ObjectDisposedException.

Pusat Aplikasi menunjukkan saya mendapatkan kesalahan yang sama ini 4 kali berbeda pada 4 perangkat berbeda dengan Formulir Xamarin 3.1.0.583944:

Galaxy S9
LG G5
Tumpukan
Galaxy 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)

Kami melihat kerusakan serupa dengan tampilan gulir yang berisi tombol, di antara komponen lainnya. Kami mempersempit masalah ke tombol, dan kemudian menemukan bahwa tombol-tombol tersebut memiliki metode Disposed yang dipanggil setelah Android sudah Membuangnya, dan pengecualiannya dilemparkan. Kami mengganti metode Dispose di kedua ScrollView dan perender Tombol untuk mencoba melakukan pembuangan, tetapi menangkap pengecualian. Kami memiliki kekhawatiran bahwa hal ini mungkin menyebabkan kebocoran, tetapi tampaknya Android telah membebaskan sumber daya (dan kebocoran memori kecil lebih baik daripada aplikasi yang mogok pada saat ini). Kami menggunakan Xamarin.Forms 3.1.0.583944 dan VS2017.

``
dilindungi override void Buang (bool disposing)
{
mencoba
{
base.Dispose (membuang);
}
catch (Exception e)
{
Console.WriteLine ("Pengecualian ditangani.");
Console.WriteLine (e.Message);
}
}

@ hazard4386 , saya bingung. Apakah Anda mengatakan saya harus membuat perender tombol kustom?

@ Duzenko apakah itu melempar dengan stacktrace yang sama seperti Anda awalnya membuka masalah ini?

@ BillyMartin1964 Masalah ini memanifestasikan dirinya dalam beberapa cara berbeda. Apakah Anda memiliki repro kecil secara kebetulan sehingga kami dapat melihat kasus penggunaan Anda?

@ PureWeen , saya khawatir repro akan sulit. Menurut App Center, itu hanya terjadi 1 kali masing-masing dengan 4 pengguna berbeda dari ratusan. Namun, saya tidak benar-benar ingin ada kerusakan! LOL

@ BillyMartin1964 Bagaimana dengan garis besar yang kasar? Melihat jejak tumpukan Anda, ada 3 atau 4 hal berbeda yang menyebabkan FragmentContainer dibuang jadi saya hanya ingin tahu apa yang terjadi dengan Anda., Juga apakah Anda sudah menggunakan perender khusus? Ini bisa jadi rumit untuk di-debug karena terkadang masalah berasal dari pengguna yang tidak membuang sumber daya dengan benar di perender khusus mereka sendiri.

@ BillyMartin1964 Ya, kami menggunakan penyaji tombol ubahsuaian untuk semua tombol dalam aplikasi kami. Kami menghapus perender khusus dan masih melihat kerusakan dengan ObjectDisposedException saat menavigasi kembali dari halaman dengan tombol. Berikut adalah sumber lengkap untuk CustomButtonRenderer. Yang diubah hanyalah menangkap ObjectDisposedException pada panggilan Buang. Saya akan perhatikan di sini bahwa mendapatkan pengecualian ini terputus-putus, terkadang akan macet saat pertama kali menavigasi kembali tetapi sebagian besar waktu itu akan membutuhkan beberapa transisi (terkadang lebih dari 20 atau 30 kali menavigasi ke halaman dengan tombol dan kembali) ke lihat masalahnya.

``
menggunakan Sistem;
menggunakan Android.Content;
menggunakan NeedsGap.Droid.Renderers;
menggunakan Xamarin.Forms;
menggunakan Xamarin.Forms.Platform.Android;

[perakitan: ExportRenderer (typeof (Button), typeof (CustomButtonRenderer))]
namespace NeedsGap.Droid.Renderers
{
kelas publik CustomButtonRenderer: ButtonRenderer
{
public CustomButtonRenderer (Konteks konteks): basis (konteks)
{
}

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

}

Saya dapat mengulangi ini pada proyek dasar tanpa perender khusus, dll.
disp2.zip
Klik tombol uji otomatis dan aplikasi selalu mogok setelah beberapa siklus navigasi.
Apa yang perlu dilakukan di sini untuk membuka kembali bug ini?

@ Duzenko perangkat apa? API? apakah kamu sedang menguji? Saya telah menjalankan proyek Anda di beberapa perangkat beberapa kali dan belum menerima error apa pun. Itu selalu masuk ke kotak dialog "Tes selesai" untuk saya

Samsung Tab S2, android 7.0.0
Menghancurkan setiap saat.

Pada hari Senin, 16 Juli 2018, 19:16 Shane Neuville [email protected] menulis:

@duzenko https://github.com/duzenko perangkat apa? API? apakah kamu sedang menguji
di? Saya telah menjalankan proyek Anda di beberapa perangkat beberapa kali dan belum menerimanya
ada crash. Itu selalu masuk ke kotak dialog "Tes selesai" untuk saya

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/xamarin/Xamarin.Forms/issues/2004#issuecomment-405302207 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/ABacT-s4FrpxF2Jv_jTgYCBdCP979FeLks5uHLxlgaJpZM4SZ0sv
.

Membuat emulator android baru berdasarkan Nexus 10.
Macet saat pengujian pertama dijalankan.
image
Sekali lagi, apa yang harus saya lakukan agar bug ini dibuka kembali?
Ini sangat penting. Aplikasi macet ketika pengguna hanya menavigasi halaman, tanpa solusi yang tersedia.

Btw bocor sekitar 20KB di setiap navigasi halaman di halaman sederhana ini. Dalam produksi saya memiliki halaman dengan gambar dan bocor 500KB per halaman.

Saya kira saya meninggalkan Xamarin.Forms untuk selamanya. Bug Anda telah menyia-nyiakan terlalu banyak waktu saya dan rekan kerja saya. Sudah 4,5 bulan sejak laporan bug asli.
Berikut tangkapan layar kebocoran memori. Baik GestureManager atau ListViewRenderer tidak menghentikan langganannya sendiri dari suatu peristiwa. BTW versi profiler saat ini rusak. Hubungi saya melalui email jika Anda tertarik (saya kira tidak).
image

@duzenko baiklah saya menggali perangkat Android lama dan saya dapat membuatnya kembali di sana secara konsisten !!!

Cukup bersemangat tentang itu. Yang ini telah menyebalkan untuk beberapa waktu jadi saya sangat menghargai teguran dan bertahan dengan saya yang satu ini.

Hai,

Apakah bug sudah diperbaiki atau diperbaiki sedang live?

Ada berita tentang ini? Ini adalah bug berdampak tinggi yang sepertinya selalu ada

@opcodewriter itu jadwal untuk sprint saat ini jadi kecuali terjadi sesuatu yang tidak terduga, itu akan segera diperbaiki

@duzenko @ Bhauraj001 @opcodewriter apakah Anda menggunakan perender cepat?

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/internals/fast-renderers
Jika tidak, dapatkah Anda mencoba dan memberi tahu saya jika Anda masih melihat kecelakaan itu?

Jika Anda menggunakan perender khusus, mereka tidak akan menggunakan perender cepat (hanya FYI) bahkan jika Anda mengaktifkannya melalui bendera

@PureWeen Saya mengalami masalah yang sama.

Mencoba saran Anda untuk mengaktifkan perender cepat, tetapi tidak menyelesaikan masalah. Justru sebaliknya - ikon di ViewCell ListView saya hilang, tetapi itu mungkin cerita untuk masalah lain.

@Bayu_joo
Saya menggunakan perender khusus di aplikasi produksi saya, jadi saya bahkan tidak akan mencoba perender cepat.

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

@rmarinho dan @PureWeen
Tentang topik perangkat dan API mana yang terpengaruh, berikut ini beberapa data yang diambil dari App Center.

Total pengguna yang terpengaruh selama sebulan terakhir: 27
Ini bukan jumlah pengguna yang besar, tetapi biasanya pengguna yang terpengaruh oleh crash mencopot pemasangan aplikasi kami dan / atau menulis ulasan buruk di toko .. dan itu menyakitkan.

Perangkat yang Paling Terkena Dampak

Perangkat | Persentase
------- | -------------
Galaxy S8 | 40,0%
Galaxy S7 edge | 20,0%
P10 | 13,3%
Galaxy S9 + | 13,3%
Lainnya | 13,3%

API yang paling terpengaruh

API | Persentase
------- | -------------
26 | 51,9%
24 | 33,3%
23 | 11,1%
22 | 3,7%

Versi OS Android yang terpengaruh mulai dari 5.1.1 hingga 8.0.0. Sebenarnya setiap versi yang kami dukung (5.x, 6.x, 7.x dan 8.x) terkena dampak.

Perangkat yang terkena dampak: Huawei P10, Huawei P10 lite, Huawei Honor 5C, Samsung Galaxy S6 hingga S9 (termasuk + dan versi edge), Samsung Galaxy A5, Wiko Jerry 2, HTC U Play, Fairphone FP2, Sony Xperia Z5.

Kami memperbarui Xamarin.Forms dan paket NuGet terkait secara teratur (hanya saluran stabil). Sekarang kami menggunakan:
Xamarin.Forms v. 3.1.0.697729
Xamarin.Android.Support.x v. 27.0.2.1

Visual Studio 2017 selalu mutakhir (yaitu pada saat penulisan 15.7.6).

Yang lebih menyakitkan adalah reputasi saya dengan pelanggan.
Selama bulan-bulan Xamarin tidak melakukan apa pun tentang bug ini (dan menutupnya tanpa alasan pada 28 Jun) aplikasi kami mogok beberapa kali di tangan pelanggan yang melakukan hal-hal dasar, seperti menavigasi halaman atau mengambil foto. Pelanggan sekarang melihat saya, sebagai programmer, sebagai penghubung yang lemah di departemen perangkat lunak mereka. Perlu waktu berhari-hari untuk melacak log kerusakan di aplikasi hockey ke bug ini. Saya telah melaporkan 10 bug xamarin tahun ini saja, belum lagi menderita bug yang dilaporkan oleh orang lain. Setiap kali saya mengatakan "Ini bug Xamarin, saya melaporkannya kepada mereka, tetapi sudah N bulan dan tidak ada jawaban" itu hanya membuat saya terlihat lebih buruk di mata mereka.
Terima kasih banyak, Xamarin!

Berikut paket nuget dari PR

Xamarin.Forms.3.3.0.726028.zip

Jika ada yang ingin menguji

Saya telah menjalankan ini melalui kasus reproduksi apa yang saya miliki dan saya tidak melihat pengecualian lagi. Ini harus tersedia pada pakan malam minggu ini juga jika Anda ingin menunggu.

@duzenko Apakah paket NuGet PureWeen memperbaiki masalah untuk Anda?

Setelah pembaruan, saya masih mendapatkan pengecualian berikut:

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.) 

Saya akan mengujinya saat dirilis untuk umum.

@Redas

Saat pengujian dapatkah Anda menghapus bin / obj dan juga menghapus aplikasi dari perangkat yang Anda uji?

Jika Anda menguji paket nuget yang saya lampirkan?

Melihat pengecualian Anda, nomor baris terlihat sesuai dengan versi sebelumnya dan bukan nuget.

Ketika saya menguji nuget itulah yang harus saya lakukan untuk memastikannya menggunakan yang terbaru dan terhebat. Jika Anda masih mengalami masalah, apakah ada repro yang dapat Anda berikan kepada saya?

@ PureWeen Ini berfungsi sekarang setelah saya mencoba saran Anda. Terima kasih. 👍

@Redas
Senang mendengar!

Di samping catatan, penyebab utama ini tampaknya berasal dari bug dengan Mono GC.
Kami sedang menyusun masalah untuk tim Mono dan saya akan menautkannya setelah masalah tersebut dibuat

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

Satu bagian yang perlu diperhatikan sebagai solusi

Untuk mengatasi masalah ini, tambahkan environment.txt ke proyek dengan tindakan build AndroidEnvironment:

MONO_GC_PARAMS = implementasi jembatan = lama
Menggunakan implementasi GC lama, error tidak terjadi!

Terima kasih telah mengatasi masalah ini

Menambahkan [CachingStrategy = "RecycleElement"] ke tampilan daftar Anda mungkin membantu memecahkan masalah.

ItemTemplate = "{StaticResource xxx}" HasUnevenRows = "true"
HorizontalOptions = "FillAndExpand" VerticalOptions = "FillAndExpand" BackgroundColor = "fuchsia">

dan hindari menyetel ItemSource Anda ke null cukup clear () saja.

@ cramirez070506 CachingStrategy="RecycleElement" tidak membantu mencegah masalah

@ PureWeen kami mengalami masalah ini meskipun telah menambahkan environment.txt seperti yang Anda jelaskan. kecuali kita melakukan kesalahan.

@NPadrutt dapat Anda coba https://www.nuget.org/packages/Xamarin.Forms/3.2.0.729530-pre2
jika Anda masih melihat kesalahan tersebut, dapatkah Anda menempelkan jejak tumpukan?

Kami harus membuat beberapa solusi buruk untuk mengeluarkan perangkat lunak tersebut. Tapi saya akan mencobanya setelah kami memfaktorkan ulang kodenya.

@Npadrut . Jika Anda kebetulan memiliki jejak tumpukan di sekitar pengecualian yang Anda lihat itu akan membantu :-) Masalahnya adalah bahwa pengecualian ini pada dasarnya sama dengan mendapatkan NRE sehingga sulit untuk mengatakan apakah contoh khusus Anda terkait dengan ini atau tidak

mh, begitu. Saya akan memberi tahu Anda ketika saya tahu lebih banyak :)

@Bayu_joo

Tes pendahuluan 3.2.0.729530-pre2 tampaknya telah memperbaiki masalah ini untuk skenario saya !!! : smiley:

Terima kasih banyak dan nantikan GA. 👍

Kami juga melihat banyak dari ini di App Center dan pengguna melaporkan kerusakan, jadi saya pikir saya akan menambahkan stacktrace ..

Stacktrace berisi referensi Xamarin.Forms.BindableProperty - dan saya tidak melihat jejak kode kami. Tidak yakin apakah ini skenario yang sama yang disebutkan sebagai diperbaiki di 3.2.0.729530-pre2 (?)

JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self)
System.ObjectDisposedException: Tidak dapat mengakses objek yang dibuang. Nama objek: 'Android.Graphics.Bitmap'.

JniPeerMembers.AssertSelf (Java.Interop.IJavaPeerable self)
JniPeerMembers + JniInstanceMethods.InvokeAbstractVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, parameter Java.Interop.JniArgumentValue *)
Bitmap.Recycle ()
ButtonDrawable.Reset ()
ButtonBackgroundTracker.Reset ()
ButtonBackgroundTracker.ButtonPropertyChanged (pengirim System.Object, System.ComponentModel.PropertyChangedEventArgs e)
(wrapper delegate-invoke) .invoke_void_object_PropertyChangedEventArgs (objek, System.ComponentModel.PropertyChangedEventArgs)
BindableObject.OnPropertyChanged (System.String propertyName)
Element.OnPropertyChanged (System.String propertyName)
BindableObject.SetValueActual (properti Xamarin.Forms.BindableProperty, Xamarin.Forms.BindableObject + konteks BindablePropertyContext, nilai System.Object, System.Boolean saat iniApplying, atribut Xamarin.Forms.Internals.SetValueFlags, System.Boolean diam)
BindableObject.SetValueCore (properti Xamarin.Forms.BindableProperty, nilai System.Object, atribut Xamarin.Forms.Internals.SetValueFlags, Xamarin.Forms.BindableObject + SetValuePrivateFlags privateAttributes)
BindableObject.SetValue (properti Xamarin.Forms.BindableProperty, nilai System.Object, System.Boolean fromStyle, System.Boolean checkAccess)
BindableObject.SetValue (properti Xamarin.Forms.BindableProperty, nilai System.Object)
Button.BorderRadiusPropertyChanged (Xamarin.Forms.BindableObject bindable, System.Object oldvalue, System.Object newvalue)
BindableObject.ClearValue (properti Xamarin.Forms.BindableProperty, System.Boolean fromStyle, System.Boolean checkAccess)
BindableObject.ClearValue (properti Xamarin.Forms.BindableProperty)
Setter.UnApply (target Xamarin.Forms.BindableObject, System.Boolean fromStyle)
Style.UnApplyCore (Xamarin.Forms.BindableObject bindable, Xamarin.Forms.Style basedOn)
IStyle.UnApply (Xamarin.Forms.BindableObject bindable)
VisualElement + MergedStyle.SetStyle (Xamarin.Forms.IStyle implicitStyle, System.Collections.Generic.IList`1 [T] classStyles, Xamarin.Forms.IStyle style)
VisualElement + MergedStyle.set_Style (nilai Xamarin.Forms.IStyle)
<.cctor> b__240_6 (Xamarin.Forms.BindableObject bindable, System.Object oldvalue, System.Object newvalue)
BindableObject.SetValueActual (properti Xamarin.Forms.BindableProperty, Xamarin.Forms.BindableObject + konteks BindablePropertyContext, nilai System.Object, System.Boolean saat ini Menerapkan, atribut Xamarin.Forms.Internals.SetValueFlags, System.Boolean diam)
BindableObject.SetValueCore (properti Xamarin.Forms.BindableProperty, nilai System.Object, atribut 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 (System.Boolean fromTarget)
BindingExpression + BindingExpressionPart.b__49_0 ()
Thread + RunnableImplementor.Run ()
IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this)
(metode dinamis pembungkus) System.Object.8618d31c-c109-49dc-a54d-404ffc85a5ed (intptr, intptr)

@ehuna itu sepertinya masalah yang sama. Pelacakan tumpukan itu tampak seperti operasi pembersihan yang biasanya diantrekan sehingga pelacakan tidak tertaut kembali ke kode Anda. Jika bug Mono GC tidak ada maka kode di sini akan membersihkan sumber daya dengan benar dan akan segera dijalankan.

Apakah ini terlihat seperti masalah yang sama?

Saya mendapat pengecualian ini saat mengklik item daftar yang membuka halaman baru, lalu kembali ke halaman tampilan daftar dan memindai item yang memicu pencarian dan sepertinya AutoCompleteRenderer (tipe dasar SearchBarRenderer) dibuang.

Jika saya hanya memindai dari halaman tampilan daftar tanpa membuka halaman item daftar dan kembali lagi, ini berfungsi dengan baik.

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 pengecualian Anda terlihat berbeda. AutoCompleteRenderer bukanlah sesuatu yang merupakan bagian dari kerangka inti sehingga sulit untuk mengatakan apa yang menyebabkan pengecualian Anda. Sepertinya AutoCompleteRenderer kustom memegang sesuatu yang tidak seharusnya.

Jika Anda dapat membuat reproduksi dan membuat masalah, kami dapat melihatnya untuk melihat apakah ada kesalahan di pihak kami atau tidak

Apakah halaman ini membantu?
0 / 5 - 0 peringkat