Firebase Android leva até 45 minutos para se reconectar
Em alguns dispositivos (lista fornecida abaixo), o Firebase leva consistentemente entre 20 e 45 minutos para se reconectar após a recuperação da conexão com a Internet. Alguma coisa pode ser feita para acelerar as coisas?
Eu primeiro pensei que o problema veio do.info/connected
o ouvinte de evento não está sendo acionado, mas percebi que, se houvesse algumas gravações pendentes, elas também seriam confirmadas após esse longo atraso, quando o ouvinte de evento foi acionado.
Tentei ouvir o estado da conectividade e ligar manualmentegoOffline
/ goOnline
, mas não produziu nenhum resultado.
O problema pode ser reproduzido com o exemplo de banco de dados de introdução do Android, por exemplo, adicionando o seguinte aoonCreate
método doSignInActivity
.
// test data value event listener
mDatabase.child("test").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
String value = snapshot.getValue(String.class);
Log.d(TAG, value);
}
@Override
public void onCancelled(DatabaseError error) {
Log.d(TAG, error.getMessage());
}
});
// test presence value event listener
mDatabase.child(".info/connected").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
Log.d(TAG, String.valueOf(connected));
}
@Override
public void onCancelled(DatabaseError error) {
Log.d(TAG, error.getMessage());
}
});
Caso isso ajude, o uso do pacote web firebase e o react-native exibem o mesmo comportamento nos mesmos dispositivos.
Aqui está uma lista de dispositivos em que vi o problema:
samsung galaxy viewchuwi-hi12 - 5.1touchlet x13 octaasus zenpad 300 chuawei mediapad t2Esses dispositivos nunca exibem esse comportamento:
acer iconia one 10 b3-a30-k5essamsung galaxy tab E - 5.1archos 121D neonFinalmente, aqui estão os logs para um dispositivo sem problemas e um dispositivo com o problema:
log ok:https://gist.github.com/VonD/eb79a57e69bc5026f0a1f145635ccd6alog not ok:https://gist.github.com/VonD/a26e194859453e2c538dd8b9e6573b62Em ambos os casos, iniciei o aplicativo, desliguei o wifi e esperei o.info/connected
ouvinte de evento a ser acionado e ativou o wifi novamente. Os registros de data e hora mostram as diferenças de atraso nos dois dispositivos.