У меня есть сервис Android, который вызывает это на onCreate
:
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.getReference(".info/connected").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Log.d(TAG, "connected: " + snapshot.getValue(Boolean.class));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Log.w(TAG, "Failed to read value.", error.toException());
}
});
Я заметил, что когда я переключаю Wi-Fi и сотовые данные, я в конечном итоге вижу сообщение «connected: false» и сообщение «connected: true» отсутствует. Наряду с базой данных Firebase в реальном времени, я также запускаю Firestore в сервисе, и Firestore правильно подключается на этом этапе.
Затем я запускаю службу Android для запуска этого кода:
FirebaseDatabase.getInstance().getReference("random/data").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
boolean connected = snapshot.getValue(Boolean.class);
Log.d(TAG, "random data: " + connected);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
// Failed to read value
Log.w(TAG, "cancelled system/online.", error.toException());
}
});
И теперь я получаю успешное чтение и выводится «подключено: истина».
Что происходит? Зачем мне нужно читать из firebase для запуска .info/connected
?