Ответ 1
Посмотрите, как эти методы запускаются, когда нет возможности подключения:
onCancelled
- при возникновении ошибки на стороне сервера. Например, когда пользователь не имеет доступа к указанному node. (Или когда вы достигаете предела соединения на плане Sparkle).
onDataChange
- если данные сохранены, он будет читать эти данные. Если нет, этот метод не будет запущен (ваш случай).
В соответствии с Firebase Documentation, если вы хотите проверить, подключено ли устройство к серверу Firebase, вы можете добавить слушателя в .info/connected
. Вот так:
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
Toast.makeText(this, "Connected", Toask.LENGTH_SHORT);
} else {
Toast.makeText(this, "Not connected", Toask.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError error) {
}
});