Мое приложение должно удалить документ Firebase, когда пользователь покидает текущую активность, например, когда он нажимает кнопку «Домой» (go на заднем плане) или кнопку «Питание». Следующий код работает нормально при нажатии Home, но ничего не делает при нажатии кнопки Power:
protected void onPause() {
super.onPause();
// Remove player from players list.
if (mPlayerDocRef != null) mPlayerDocRef.delete();
if (mAuthStateListener != null) mFirebaseAuth.removeAuthStateListener(mAuthStateListener);
}
Поскольку delete () является асинхронным действием, я попытался добавить обратные вызовы следующим образом:
if (mPlayerDocRef != null)
mPlayerDocRef.delete()
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
if (mAuthStateListener != null) mFirebaseAuth.removeAuthStateListener(mAuthStateListener);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error deleting document", e);
}
});
но обратные вызовы никогда не будут вызваны. Есть идеи, в чем проблема?
ОБНОВЛЕНИЕ: Я тестировал на реальных Samsung Galaxy Tab A (Android 9) и Samsung Note 8 (* 1016) * 6.0.1) и там нет проблем, только с Pixel 2 (Android 10). Может быть ошибка в ОС.