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 ?

questionAnswers(2)

yourAnswerToTheQuestion