首页 > 解决方案 > 如何在用户不在应用程序(android studio)中时运行firebase实时数据库“onChildEventListener”?

问题描述

我有一个 Android 应用程序可以监听我的 firebase 实时数据库中添加的子项。这个应用程序有点像一个消息应用程序,所以当这个孩子被添加时,我需要这个应用程序能够立即阅读它。我当前的代码有效,但仅当应用程序打开并运行时。我想知道如何使这个子侦听器在手机启动时启动,并且可以在将这些消息添加到 Firebase 时接收和处理这些消息,即使用户尚未打开该应用程序也是如此。

事件监听器代码:

    ChildEventListener childTherapist = new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {

            Log.d("Fetching", "onChildAdded called");
            childTherapistChildAdded(snapshot);

        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {

            Log.d("Fetching", "onChildChanged called");
            Log.d("Fetching", "previousChildName: " + previousChildName);


        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot snapshot) {

            Log.d("Fetching", "onChildRemoved called");
        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {

            Log.d("Fetching", "onChildMoved called");

        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

            /*
             * TODO:
             *  This method will be triggered in the event that this listener either failed at the server, or is removed as a result of the security and Firebase rules.
             *  IMplement this
             */
        }
    };

    Log.d("Fetching", "Adding stuff for user: " + mAuth.getUid());

    dbRef.child("Connections").child(connectionID).child(mAuth.getUid()).child("Messages").addChildEventListener(childTherapist);

}

TL;DR 我只需要一种方法让这段代码在后台运行

标签: javaandroidfirebasefirebase-realtime-database

解决方案


推荐阅读