إضافة وإزالة مستمعي اللقطات في FirebaseUI-Android RecyclerView
يوفر FirebaseUI-Android طريقة ملائمة لملء RecyclerViews بالبيانات في الوقت الفعلي من فايرستور. ومع ذلك، من المهم فهم كيفية إضافة مستمعي اللقطات وإزالتهم بشكل صحيح لتجنب تسرب الموارد.
إضافة مستمع لقطة
عند استخدام FirebaseRecyclerAdapter، تتم إضافة مستمع لـ كل عنصر في RecyclerView. في الأسلوب populateViewHolder، يمكنك استخدام الأسلوب getRef(i) لاسترداد DocumentReference للعنصر الحالي.للاستماع إلى التغييرات في المرجع، يمكنك استخدام الأسلوب addSnapshotListener (EventListener). تأخذ هذه الطريقة EventListener كوسيطة، والتي سيتم استدعاؤها كلما تغيرت لقطة المرجع.
إزالة مستمع اللقطة
من الضروري إزالة المستمع عندما لم تعد هناك حاجة إليها. سيؤدي عدم القيام بذلك إلى تسرب الذاكرة. يمكنك إزالة المستمع باستخدام طريقة الإزالة () على كائن تسجيل المستمع.
التنفيذ في طريقة populateViewHolder
فيما يلي مثال لكيفية إضافة لقطة وإزالتها المستمع في طريقة populateViewHolder الخاصة بـ FirebaseRecyclerAdapter:
@Override
محمية باطلة populateViewHolder(final ConvViewHolder convViewHolder, Final Conv conv, int i) {
السلسلة النهائية list_user_id = getRef(i).getKey();
Final DocumentReference docRef = db.collection("cities").document(list_user_id);
ListerRegistration listerRegistration = null;
إذا (تسجيل المستمع == فارغ) {
المستمعRegistration = docRef.addSnapshotListener(new EventListener
@Override protected void populateViewHolder(final ConvViewHolder convViewHolder, final Conv conv, int i) { final String list_user_id = getRef(i).getKey(); final DocumentReference docRef = db.collection("cities").document(list_user_id); ListenerRegistration listenerRegistration = null; if (listenerRegistration == null) { listenerRegistration = docRef.addSnapshotListener(new EventListenerإزالة المستمع في أساليب دورة حياة النشاط() { @Override public void onEvent(@Nullable DocumentSnapshot snapshot, @Nullable FirebaseFirestoreException e) { if (e != null) { Log.w(TAG, "Listen failed.", e); return; } if (snapshot != null && snapshot.exists()) { Log.d(TAG, "Current data: " snapshot.getData()); } else { Log.d(TAG, "Current data: null"); } } }); } }
لإزالة المستمع عندما لم يعد النشاط مرئيًا، يمكنك تجاوز طريقة onStop() في نشاطك واستدعاء طريقة الإزالة () في سجل المستمع.
@Override الفراغ المحمي onStop () { super.onStop(); إذا (تسجيل المستمع ! = فارغ) { listerRegistration.remove(); }
@Override protected void onStop() { super.onStop(); if (listenerRegistration != null) { listenerRegistration.remove(); } }
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3