2016-07-16 113 views
5

Sto utilizzando Firebase per creare una piccola applicazione di chat. Voglio che ChildEventListener continui ad ascoltare la posizione del database di Firebase anche se la mia app è in background o è stata chiusa. Attualmente sto registrando e quando la mia app si chiude o si chiude usando finish(), dopo di che nessuno dei miei metodi di ChildEventListener viene chiamato come onChildAdded o onChildChanged sebbene non abbia chiamato removeEventListener. Voglio che ChildEventListener sia sempre in esecuzione in background. C'è comunque di farlo?Firebase: continua ad ascoltare ChildEventListener anche se l'app termina

+0

Ciao, hai trovato qualche soluzione per questo? –

+0

No, ma non chiamare 'removeEventListener' e immagino che dovrebbe funzionare per te! –

+0

Ok. Vuoi dire che ChildEventListener funzionerà sempre in background thread anche l'app è kill O dobbiamo fare tutto questo in servizio? –

risposta

8

utilizzare il servizio per ascoltare la vostra ChildEventListener

public class ChildEventListener extends Service { 
     @Override 
     public IBinder onBind(Intent intent) { 
      return null; 
     } 
     @Override 
     public int onStartCommand(Intent intent, int flags, int startId) { 
      //Adding a childevent listener to firebase     
      Firebase myFirebaseRef = new Firebase("FirebaseURL"); 
      myFirebaseRef.child("FIREBASE_LOCATION").addValueEventListener(new ValueEventListener() { 

       @Override 
       public void onDataChange(DataSnapshot snapshot) { 
        //Do something using DataSnapshot say call Notification 
       } 

       @Override 
       public void onCancelled(FirebaseError error) { 
        Log.e("The read failed: ", error.getMessage()); 
       } 
      }); 

      } 

       @Override 
       public void onCancelled(FirebaseError firebaseError) { 
        Log.e("The read failed: ", firebaseError.getMessage()); 
       } 
      }); 

      return START_STICKY; 
     } 

    } 

Registra il servizio all'interno manifesto

<service android:name=".ChildEventListener "/> 

Avviare il servizio e ascoltare per childEvents, dove/quando iniziare il vostro servizio è fino alla chat app design

+0

ma quando avvierò la mia istanza di servizio esistente, registrerà nuovamente ChildEventListener che sta causando più listener di ChildEventListener. È comunque necessario verificare che il mio ChildEventListener stia già ascoltando? –

+0

Usa sharedPreferences per verificare se il tuo ascoltatore childEvent è attivo o meno. Se non è in ascolto, aggiungi solo quel listener di eventi –

+0

questo è quello che sto dicendo, come verificare che ChildEventListener? c'è qualche ascoltatore che mi dirà che non sta ascoltando? –

Problemi correlati