2016-07-16 24 views
5

Tôi đang sử dụng Firebase để tạo ứng dụng trò chuyện nhỏ. Tôi muốn ChildEventListener để tiếp tục nghe vị trí cơ sở dữ liệu Firebase mặc dù ứng dụng của tôi ở chế độ nền hoặc nó đã thoát. Hiện tại tôi đang đăng ký nó và khi ứng dụng của tôi thoát hoặc đóng sử dụng finish(), sau đó không có phương pháp nào của ChildEventListener của tôi được gọi là onChildAdded hoặc onChildChanged mặc dù tôi chưa gọi removeEventListener .Tôi muốn ChildEventListener luôn chạy ngầm. Có cách nào để làm điều đó không?Firebase: tiếp tục nghe ChildEventListener mặc dù thoát ứng dụng

+0

Xin chào, bạn đã tìm thấy giải pháp nào cho điều này? –

+0

Không, nhưng không gọi 'removeEventListener' và tôi đoán nó sẽ phù hợp với bạn! –

+0

Ok. Bạn có nghĩa là ChildEventListener sẽ luôn luôn làm việc trong chủ đề nền thậm chí ứng dụng là giết HOẶC chúng ta cần phải làm tất cả những thứ này trong dịch vụ? –

Trả lời

8

Sử dụng dịch vụ nghe ChildEventListener bạn

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

    } 

đăng ký dịch vụ của bạn bên trong Manifest

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

Bắt đầu dịch vụ của bạn và lắng nghe cho childEvents, nơi/khi nào bắt đầu dịch vụ của bạn lên đến ứng dụng trò chuyện của bạn thiết kế

+0

nhưng khi tôi sẽ bắt đầu phiên bản dịch vụ hiện tại của mình, sau đó nó sẽ đăng ký ChildEventListener một lần nữa đang gây ra nhiều người nghe ChildEventListener. Có cách nào để kiểm tra xem ChildEventListener của tôi đã nghe chưa? –

+0

Sử dụng sharedPreferences để kiểm tra xem người nghe emEvent của bạn có đang hoạt động hay không.Nếu không nghe thì chỉ thêm người nghe sự kiện –

+0

đó là những gì tôi đang nói, cách kiểm tra ChildEventListener? là có bất kỳ người nghe sẽ cho tôi biết nó không nghe? –

Các vấn đề liên quan