private FirebaseAuth mAuth;
private Query getChatsList;
private ValueEventListener getChatsListEventListener;
private AdapterChatsList adapterChatsList;
private List<String> providerUids;
private List<String> providerNames;
private RecyclerView chatsRecyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chats_list);
mAuth = FirebaseAuth.getInstance();
providerUids = new ArrayList<>();
providerNames = new ArrayList<>();
chatsRecyclerView = findViewById(R.id.chatsRecyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(ChatsListActivity.this);
layoutManager.setStackFromEnd(true);
layoutManager.setReverseLayout(true);
chatsRecyclerView.setLayoutManager(layoutManager);
getChatsList = FirebaseDatabase.getInstance().getReference("Users").child(mAuth.getCurrentUser().getUid()).child("Chats").orderByChild("details/lastInteraction");
getChatsListEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
providerUids.clear(); providerNames.clear();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String providerUid = ds.getKey();
String providerName = ds.child("details").child("oppositeName").getValue(String.class);
providerUids.add(providerUid);
providerNames.add(providerName);
adapterChatsList = new AdapterChatsList(ChatsListActivity.this, providerUids, providerNames);
adapterChatsList.notifyDataSetChanged();
chatsRecyclerView.setAdapter(adapterChatsList);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
}
@Override
protected void onStart() {
super.onStart();
getChatsList.addValueEventListener(getChatsListEventListener);
}
@Override
protected void onStop() {
super.onStop();
if(getChatsListEventListener != null) {
getChatsList.removeEventListener(getChatsListEventListener);
}
}
Мой аддалювентлистинер firebase действует, когда содержащая активность не открыта. Я открываю домашнюю активность моего приложения, где кнопка ссылается на сомнительную активность. Если изменение в пожарной базе сделано, домашняя активность обновляется. Если я открыл действие, содержащее прослушиватель события value, и произошла смена firebase, действие закрывается, и приложение возвращается к домашнему действию. Я установил прослушиватель событий для ссылки на базу данных в onStart (), и я удаляю его в onStop (). Что я могу сделать?