DocumentReference.update () не работает, когда приложение закрывается - PullRequest
1 голос
/ 28 апреля 2020

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

Когда я заменяю свой фрагмент A другим (в пределах Activity), вызывается A.onDestroy () и DocumentRefence.update () работает отлично.

Проблема в том, что я получаю странное поведение при выполнении обновления, в случае, когда Fragment.onDestroy () вызывается, когда приложение закрывается пользователем. (Когда пользователь удаляет приложение в последних приложениях)

Похоже, что метод DocumentReference.update () не запускается и просто блокирует мой код.

Вот onDestroy () в моем фрагменте.

@Override
public void onDestroy() {
    Log.d("Fragment", "onDestroy: before");
    FirestoreHelper.removePlayer(viewModel.getGameName(), viewModel.getPlayerName());
    Log.d("Fragment", "onDestroy: after");

    super.onDestroy();
}

А вот метод, который обновляет DocumentReference.

public static void removePlayer(String gameName, String playerName) {
        Log.d("Firestore", "removePlayer: before");
        DocumentReference docRef = getGamesReference().document(gameName);
        Log.d("Firestore", "removePlayer: middle");
        docRef.update("players." + playerName, FieldValue.delete());
        Log.d("Firestore", "removePlayer: after");
    }

Вот мой журнал после закрытия приложения:

D/Activity: onDestroy: 
D/Fragment: onDestroy: before
D/Firestore: removePlayer: before
D/Firestore: removePlayer: middle

Вы видно, что docRef.update (...) блокирует код.

Заранее спасибо за любой ответ!

1 Ответ

0 голосов
/ 28 апреля 2020

Как упомянуто в этом документе , нет никакой гарантии, что onDestroy () когда-либо будет вызван. Как отметил @Doug Stevenson в комментарии, как только пользователь удалит приложение из списка задач, оно больше не будет запускать код.

...