Мой addvalueeventlistener firebase действует, когда действие не открывается - PullRequest
0 голосов
/ 04 февраля 2020
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 (). Что я могу сделать?

...