如何删除为每个视图项创建的多个侦听器?
@Override
protected void populateViewHolder(final MessageViewHolder viewHolder, final Friends msg, int position) {
online = FirebaseDatabase.getInstance().getReference().child("online").child(msg.friend_id);
userListener = online.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Online online = dataSnapshot.getValue(Online.class);
if(online != null){
if (viewHolder.getDiff(online.timestamp) < 1){
viewHolder.donline.setVisibility(View.VISIBLE);
System.out.println("Is online");
} else {
viewHolder.donline.setVisibility(View.GONE);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
};
重新打开应用程序后,它将为viewHolder中的每个项目创建一个新的侦听器。我如何在onDestroy内部取消所有内容?
要分离多个qazxsw opi,您可以使用以下方法:
listeners
并且不要忘记根据您的活动生命周期使用此方法:
public static void removeValueEventListener(HashMap<DatabaseReference, ValueEventListener> hashMap) {
for (Map.Entry<DatabaseReference, ValueEventListener> entry : hashMap.entrySet()) {
DatabaseReference databaseReference = entry.getKey();
ValueEventListener valueEventListener = entry.getValue();
databaseReference.removeEventListener(valueEventListener);
}
}