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));

Я надеюсь есть возможность убрать обновление всей активности, потому что обновление в реальном времени нужно на протяжении всего времени работы приложения.


Ответы (0 шт):