(1/2) Это действительно странно. Я скопировал / вставил ваш код, и он работал один раз. Затем я добавил свой экземпляр firebaseapp в качестве параметра для FirebaseDatabase.getInstance (), и он больше не работал (время ожидания 1 минута). Затем я удалил экземпляр firebaseapp, и он тоже больше не работал ... Затем я полностью удалил приложение и снова вернулся к вашему коду => больше не работает ....

ользую бета-версию Firestore в своем приложении и хочу проверить, есть ли работающее онлайн-соединение с базой данных Firestore. В документации говорится, что в настоящее время нет прямого способа запроса состояния соединения, но можно использовать состояние соединения Firebase в качестве обходного пути. Фрагмент кода для этого также можно найти в этой части документации:Создайте свое присутствие в Cloud Firestore.

    connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
    connectionStateListener = connectedRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            Boolean connected = snapshot.getValue(Boolean.class);

            if (connected == null) {
                changeState(FirebaseConnectionState.error);
                return;
            }

            if (connected) {
                changeState(FirebaseConnectionState.connected);
            } else {
                changeState(FirebaseConnectionState.not_connected);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            L.i("FirebaseConnectionStateListener was cancelled");
        }
    });

ValueEventListener Сам работает, и я получаю обновления статуса. Но по какой-то причине статус переключается с «подключен» на «не подключен» через 1 минуту. Кроме того, что это неправильно, я не могу вернуть его в «подключен», кроме перезапуска приложения.

Вот некоторые выходные данные отладки:

2018-11-15 13:38:20.340: [FirebaseHeartbeatConnector] FirebaseHeartbeatConnector() called with: firebaseApp = [FirebaseApp{name=development, options=FirebaseOptions{applicationId=1:xxxxx:android:xxxxx, apiKey=xxxxx, databaseUrl=null, gcmSenderId=null, storageBucket=xxxx.appspot.com, projectId=xxxxx}}]
2018-11-15 13:38:20.480: [FirebaseHeartbeatConnector] startConnecting() called
2018-11-15 13:38:20.482: [FirebaseHeartbeatConnector] doSendFirestoreHeartbeatRequest() called
2018-11-15 13:38:20.840: [FirebaseHeartbeatConnector] change State called
2018-11-15 13:38:20.840: [FirebaseHeartbeatConnector] State changed initial -> not_connected
2018-11-15 13:38:21.380: [FirebaseHeartbeatConnector] change State called
2018-11-15 13:38:21.381: [FirebaseHeartbeatConnector] State changed not_connected -> connected
2018-11-15 13:39:20.514: [FirebaseHeartbeatConnector] change State called
2018-11-15 13:39:20.515: [FirebaseHeartbeatConnector] State changed connected -> not_connected

Почему это так и как я могу получить правильное обновление статуса?

Ответы на вопрос(1)

Ваш ответ на вопрос