Firebase: quando o evento onDisconnect dispara?
Estou usando o Firebase-back-end para meu aplicativo para Android. Eu gostaria de criar um sistema de presença de usuários para o meu bate-papo. Para esse fim, peguei o padrão do Firebase Guide
final Firebase myConnectionsRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/users/joe/connections");
// stores the timestamp of my last disconnect (the last time I was seen online)
final Firebase lastOnlineRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/users/joe/lastOnline");
final Firebase connectedRef = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/.info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
// add this device to my connections list
// this value could contain info about the device or a timestamp too
Firebase con = myConnectionsRef.push();
con.setValue(Boolean.TRUE);
// when this device disconnects, remove it
con.onDisconnect().removeValue();
// when I disconnect, update the last time I was seen online
lastOnlineRef.onDisconnect().setValue(ServerValue.TIMESTAMP);
}
}
@Override
public void onCancelled(FirebaseError error) {
System.err.println("Listener was cancelled at .info/connected");
}
});
O problema é que eu não sei quandoonDisconnect evento seria demitido ?!
Toda vez que abro o aplicativo, escrevo TRUE no nó "usuários / joe / conexões"mas quando eu fechei o aplicativo, nada aconteceria. Quando eu desligasse o WIFI, o parâmetro booleano também não seria removido. onDisconnect-event só disparava quando eu parava o aplicativo à força ou reinstalava o aplicativo ou em algum outro lugar quando não conseguia` t determinar.
Então, como eu entendi direito, tenho que lidar manualmente com esses eventos:
1) feche meu aplicativo;
2) desligue o Wi-Fi;
3) talvez algo mais
para criar o recurso Presença no meu aplicativo? Mas então quandoevento onDisconnect ser despedido ?