Как следует из названия, я использую infor/connection для проверки соединения от клиента к базе данных, но если я удалю и переустановлю приложение, infor/connection вернет true и вернет false после этого, даже если устройство может получить доступ к Интернету, я проверил на реальном и виртуальном устройство, и эта проблема все еще остается.
это код для проверки соединения:
mValueEventConnection = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
boolean isConnected = dataSnapshot.getValue(Boolean.class);
updateConnectionStatus(isConnected);
Log.d("SSSSS-CONNECTION", isConnected + "");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("SSSSS-CONNECTION", databaseError + "");
}
};
CONNECT_REF.addValueEventListener(mValueEventConnection);
и результат:
D/SSSSS-CONNECTION: true
D/SSSSS-CONNECTION: false
ОБНОВИТЬ:
После переустановки и открытия приложения в первый раз проблема возникнет, а во второй раз - нет.
Итак, быстрый вопрос. Как я могу заставить его вернуть true в этом случае. я должен читать или писать что-то в базу данных?
Ой, я хотел сказать "отключает" там, но я думаю, вы меня правильно поняли. Чтобы соединение оставалось открытым, убедитесь, что есть активный прослушиватель. Так что прикрепите слушателя к какой-то регулярной части ваших данных. Даже не имеет значения, существуют ли данные, так что FirebaseDatabase.getInstance().getReference("ThisDoesNotExist").addValueEventListener(...).
спасибо, Фрэнк, я использую keepsynced, чтобы сохранить пустой прослушиватель в базе данных, и теперь все в порядке
Прохладный. Спасибо за подтверждение. В этом случае я добавлю ответ, так как отсутствие слушателей / записей объясняет поведение.
Псевдоузел .info/connection указывает, есть ли у клиента подключение к серверу базы данных Firebase, а это больше, чем просто подключение к Интернету.
Обратите внимание, что клиент Firebase автоматически отключается через минуту, если нет активного прослушивателя данных и нет записей. Поэтому, если у вас нет активных прослушивателей или записей, а отключение происходит примерно через минуту или около того после подключения, это может объяснить поведение.
В этом последнем случае вы можете прикрепить прослушиватель к какой-либо обычной части ваших данных или к несуществующему узлу: FirebaseDatabase.getInstance().getReference("ThisDoesNotExist").addValueEventListener(...).
Псевдоузел
.info/connectionуказывает, есть ли у клиента подключение к серверу базы данных Firebase, а это больше, чем просто подключение к Интернету. Обратите внимание, что клиент Firebase автоматически подключается через минуту, если нет активного прослушивателя данных и нет записей.