2016-07-16 10 views
5

私はFirebaseを使って小さなチャットアプリケーションを作成しています。私はChildEventListenerが私のアプリがバックグラウンドにあるか、または終了しているにもかかわらず、firebaseデータベースの場所を聴き続けたいと思っています。現在、私はそれを登録していて、finish()を使用してアプリケーションを終了したり閉じたりした後、removeEventListenerを呼び出さずにChildEventListenerのメソッドがonChildAddedまたはonChildChangedのように呼び出されていません。ChildEventListenerを常にバックグラウンドで実行します。とにかくそれをしているのですか?Firebase:アプリケーションが終了しても、ChildEventListenerを聞き続ける

+0

こんにちは、これについてはどのような解決策が見つかりましたか? –

+0

いいえ、しかし 'removeEventListener'を呼び出さないでください。あなたのためにはうまくいくでしょう! –

+0

つまり、ChildEventListenerは、アプリケーションがkillでも、バックグラウンドスレッドでも動作することになります。または、すべてのサービスを実行する必要がありますか? –

答えて

8

利用サービスチャットアプリまである

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; 
     } 

    } 

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

マニフェスト

の内側にあなたのサービスを登録し、あなたのサービスを起動し、/あなたのサービスを開始するchildEvents、のために耳を傾け、あなたのChildEventListener聞くことデザイン

+0

しかし、私がサービスの既存のインスタンスを開始するとき、ChildEventListenerの複数のリスナーを引き起こしているChildEventListenerを再び登録します。私のChildEventListenerがすでに聞いていることを確認するにはどうしますか? –

+0

あなたのchildEventリスナーがアクティブであるかどうかを確認するにはsharedPreferencesを使用します。リスニングしていない場合は、そのイベントリスナのみを追加します –

+0

私が言っていることは、ChildEventListenerをチェックする方法ですか?聞こえていないことを教えてくれるリスナーはいますか? –

関連する問題