спасибо за любопытство!
Я сомневаюсь, действительно ли необходимо звонить addOnCompleteListener
, когда я использую setPersistence(true)
.
Когда я использую addOnCompleteListener
, если мой интернет отключен, экран продолжает загружаться, потому что addOnCompleteListener
никогда не закончится - в ожидании соединения.Таким образом, я не могу ничего добавить в автономном режиме, потому что экран загрузки ожидает подключения (нарушая концепцию постоянства).
Пример ниже показывает, о чем я говорю:
getDatabaseReference()
.child("Example")
.child(userID)
.push()
.setValue(dataExample)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
//interface call with success response
interface.onSuccess();
}else {
//interface call with failure response
interface.onFailure(task.getException().getMessage());
}
}
});
Итак, как я уже сказал, если мой интернет отключен, я не могу завершить действие, экран загрузки продолжает загружатьсянавсегда (ожидание завершителя).
Я понял, что без addOnCompleteListener
я могу добавлять и удалять значения, пока я не в сети, потому что они в кеше, поэтому, когда у меня есть интернет, приложениеотправлять обновления в базу данных онлайн - это замечательно.
В приведенном ниже примере показано, что я предлагаю:
getDatabaseReference()
.child("Example")
.child(userID)
.push()
.setValue(dataExample);
//interface call with successful response without handling error (because it won't happen)
interface.onSuccess();
Итак, мой вопрос: правильно ли это делать?Это хорошая практика?Без addOnCompleteListener
и возможность использовать мое приложение в автономном режиме, отправляя обновления только при наличии возможности?