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
risposta
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
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? –
Usa sharedPreferences per verificare se il tuo ascoltatore childEvent è attivo o meno. Se non è in ascolto, aggiungi solo quel listener di eventi –
questo è quello che sto dicendo, come verificare che ChildEventListener? c'è qualche ascoltatore che mi dirà che non sta ascoltando? –
Ciao, hai trovato qualche soluzione per questo? –
No, ma non chiamare 'removeEventListener' e immagino che dovrebbe funzionare per te! –
Ok. Vuoi dire che ChildEventListener funzionerà sempre in background thread anche l'app è kill O dobbiamo fare tutto questo in servizio? –