我正在使用Firebase创建小型聊天应用程序。我希望ChildEventListener继续监听Firebase数据库位置,尽管我的应用程序处于后台或已退出。目前我正在注册它,当我的应用程序使用finish()退出或关闭时,尽管我没有调用onChildAdded,但之后没有像onChildChangedremoveEventListener那样调用ChildEventListener的方法。我希望ChildEventListener始终在后台运行。反正有这样做吗?

最佳答案

使用服务来监听您的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;
       }

  }

在 list 中注册您的服务
    <service android:name=".ChildEventListener "/>

启动服务并监听childEvents,何时/何时启动服务取决于您的聊天应用程序设计

10-08 16:07