Как убедиться, что процесс обновления базы данных firebase завершен независимо от жизненного цикла активности - PullRequest
0 голосов
/ 11 января 2020

В моем приложении есть новостная статья и закладка ImageButton. При нажатии метод, показанный ниже, называется

 public void onBookmarkClick(View view){
    if (isBookmarked){
        bookmarkedDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                    Article articleValue = snapshot.getValue(Article.class);
                    String id = snapshot.getKey();
                    if (article.equals(articleValue)){
                        bookmarkedDatabase.child(id).removeValue();
                    }
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }else {
        String id = bookmarkedDatabase.push().getKey();
        bookmarkedDatabase.child(id).setValue(article);
    }
    isBookmarked = !isBookmarked;
    setupBookmarkIcon();
}

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

Как убедиться, что процесс чтения и записи из / в базу данных firebase завершен, даже когда активность уничтожается.

1 Ответ

0 голосов
/ 11 января 2020

Вы можете использовать полный Слушатель, чтобы узнать, успешно ли выполнено обновление Из документации firebase

Add a Completion Callback
If you want to know when your data has been committed, you can add a completion listener. 
Both setValue() and updateChildren() take an optional completion 
listener that is called when 
the write has been successfully committed to the database. 
If the call was unsuccessful, the listener is passed an error object indicating why the failure occurred

Firebase

Или мое предложение использовать класс viewModel и делать там обновление.

Viewmodel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...