Firebase: quando si accende un evento onDisconnect?

Sto utilizzando Firebase-backend per la mia applicazione androida. Vorrei build un sistema di presenza degli utenti per la chat. A questo scopo ho preso il model da 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"); } }); 

Il problema è che non so quando l' evento onDisconnect sarebbe stato licenziato ?!

  • Distriggers button quando i campi Modifica text sono vuoti
  • Domanda MapActivity per ospedale / ristorante più vicino non funzionante
  • Come consumare elemento / widget di gui riutilizzabili con risorse in android
  • Barra di avanzamento di Android SDK di Facebook durante il caricamento
  • Come posso restituire un boolean da AsyncTask?
  • Condividere le impostazioni WiFi come QR-Code per WPA2 Enterprise
  • Ogni volta che apro l'app scrivo TRUE al nodo " utenti / joe / connessioni ", ma quando chiusi l'applicazione non sarebbe successo niente. Quando ho spento WIFI off allora il parametro boolean non sarebbe stato rimosso pure. l'evento onDisconnect ha sparato solo quando ho fermato forzatamente la mia applicazione o ho reinstallato questa applicazione o qualche altra cosa quando non ho potuto determinare.

    Così, come ho capito bene devo gestire manualmente tali events:

    1) chiudere la mia applicazione;

    2) spegni il WiFi fuori;

    3) forse qualcos'altro

    per creare funzionalità di presenza nella mia app? Ma allora quando è distriggersto l'evento onDisconnect ?

  • Ottieni thumbnail Uri / path dell'image memorizzata in SD card + android
  • Come avvolgere il text lungo in un filatore
  • Frammento di Android, tornando indietro senza ricreare / ricaricare frammento
  • Come comunicare i dati tra due frammenti in un cassetto di navigazione
  • Android Studio import test di unità esistenti "Imansible trovare informazioni sulla strumentazione"
  • Inviare un command javascript a una visualizzazione Web utilizzando le variables ottenute con un EditText
  • 2 Solutions collect form web for “Firebase: quando si accende un evento onDisconnect?”

    Ci sono due casi che possono verificarsi quando il client e il server sono disconnessi:

    1. il client si disconnette esplicitamente dal server
    2. il cliente scompare semplicemente

    Quando uccidi l'applicazione, stai triggersndo una sconnessione esplicita. In questo caso il client invierà un segnale al server che sta scollegando e il server eseguirà immediatamente la chiamata di onDisconnect .

    Quando si distriggers wifi, l'applicazione non ha la possibilità di indicare al server che sta scollegando. In questo caso l' onDisconnect si onDisconnect una volta che il server rileva che il client è andato. Questo può richiedere alcuni minuti, a seconda del modo in cui i timeout per le socket sono configurati. Quindi in quel caso devi solo essere un po 'più paziente.

    Quando l'utente esce dall'applicazione, è ansible call admin.database().goOffline() per scollegarsi esplicitamente dalla firebase, che dovrebbe triggersre la chiamata di onDisconnect . Quando l'utente torna all'applicazione, call admin.database().goOnline() per riconnettersi con firebase.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.