Я пытаюсь установить событие однозначного прослушивателя, и он работает обычно. (Выполнение этого с помощью pull to refresh - оно работает, даже если я убью приложение и снова открою его, или система андроида восстановит память в фоновом режиме).Firebase, иногда не вызывающая база данных
Однако, возможно, через определенный промежуток времени (пару часов) я возвращаюсь в приложение и пытаюсь получить к нему доступ, а приведенный ниже код больше не срабатывает. И он остается в этом неоперабельном состоянии (однако я проверяю, что все есть). Это продолжается до тех пор, пока я в основном не выхожу из системы и не заходим в систему.
Я поместил журнал в метод onDataChange и не запускается. Я вытащил его за него, и он выстрелил.
Вот мой код:
FirebaseDatabase.getInstance()
.getReference()
.child(context.getString(R.string.firebase_jobs))
.child(userId).
addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot jobSnapShot : dataSnapshot.getChildren()) {
JobItem jobItem = jobSnapShot.getValue(JobItem.class);
// Add the ID into the jobItem
jobItem.setId(dataSnapshot.getKey());
// Set the jobItem
arrayList.add(jobItem);
subscriber.onNext(jobItem);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e(TAG, "onCancelled: " + databaseError.getMessage());
}
});
}
ли кто-нибудь испытал код, где он иногда не может вызвать в коде? Благодаря!
Edit: я пытаюсь выйти в то время как его обжиг, и я получаю сообщение об ошибке журнала:
E/FirebaseRetrieveData: onCancelled: Permission denied
Так дело стреляет, он просто занимает много времени, чтобы получить данные обратно ... если это когда-либо!
Mhmm ... извините - я имел в виду, что он срабатывает один раз, все в порядке. Я делаю попытку для обновления, и это срабатывает нормально. Убейте приложение, оставьте его в фоновом режиме, и система восстановит память (убив ее), и перезапуск ее все еще работает. ОДНАКО Я оставляю свой телефон и возвращаюсь на пару часов позже, и он, похоже, больше не может запускать, и становится шалостями в неработоспособном состоянии. Это проблема. – lawonga
Да. Это предполагаемое поведение для 'addListenerForSingleValueEvent()'. Он запускается только один раз, а затем больше нет. Если вы хотите прослушивать каждое событие на определенной ссылке/child, вы должны использовать 'addValueEventListener()' вместо этого. –
Ах хорошо ... имеет смысл. Firebase docs, похоже, временами вводят в заблуждение (мне все равно). Спасибо, попробуй! – lawonga