Android OnDataChange избыточное обновление
У меня есть несколько методов OnDataChange, которые в зависимости от полей БД меняют на экране некоторые картинки. Но при любом изменении данных в БД приложение, похоже, заново создает активность, выглядит это как будто я его свернул и тут же развернул обратно. Случается не только в случае с картинкой, но и с сохранением текстовой заметки. В моем представлении на примере картинки OnDataChange должен просто поменять маленькую картинку на экране, пересоздание активности избыточно и крайне неприглядно.
ValueEventListener:
DatabaseReference db2 = FirebaseDatabase.getInstance().getReference();
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String name = Objects.requireNonNull(snapshot.child("Users/" + user_id).getValue(User.class)).getName();
String status = Objects.requireNonNull(snapshot.child("Users/" + user_id).getValue(User.class)).getStatus();
String phone = Objects.requireNonNull(snapshot.child("Users/" + user_id).getValue(User.class)).getPhone();
String mark = Objects.requireNonNull(snapshot.child("Users/" + user_id).getValue(User.class)).getMark();
String note = Objects.requireNonNull(snapshot.child("Users/" + user_id).getValue(User.class)).getNote();
initialize_row_with_user_credits(name, status, phone, mark, user_id, note);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
};
db2.addListenerForSingleValueEvent(postListener);
}
Код смены картинки в initialize_row_with_user_credits:
if(mark.equals("true")) mark_button.setImageDrawable(res.getDrawable(android.R.drawable.btn_star_big_on));
else mark_button.setImageDrawable(res.getDrawable(android.R.drawable.btn_star_big_off));
Я надеюсь есть возможность убрать обновление всей активности, потому что обновление в реальном времени нужно на протяжении всего времени работы приложения.