【问题标题】:How to display not synched yet firebase messages in recyclerview when is user offline?用户离线时如何在recyclerview中显示尚未同步的firebase消息?
【发布时间】:2021-01-04 12:18:29
【问题描述】:

我正在使用 firebase 实时数据库开发聊天应用程序,我面临的问题是当用户离线并且他们发送消息时,对于大于 4.2.2 和版本 4.2 的 android 版本,它会自动出现在 recyclerview 中。 2及以下不显示离线消息,我想在这些较低版本中做同样的事情,如何在recyclerview中显示离线消息(不同步)? 这是 fetchMessages 方法:

private void fetchMessages() {
        if(mChildEventListener == null) {
            mChildEventListener = new ChildEventListener() {
                @Override
                public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
                    if (snapshot.exists()) {
                        Messages messages = snapshot.getValue(Messages.class);
                        messagesList.add(messages);
                        adapter.notifyDataSetChanged();
                        mRecyclerView.smoothScrollToPosition(messagesList.size()-1);

                    }
                }

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


                }

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

                }

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

                }

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

                }
            };
            messagesRef.child(pair).addChildEventListener(mChildEventListener);
        }

    }

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    用于在您的应用程序类中使用以下代码离线显示消息,如下所示

    public class APP NAME extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            FirebaseDatabase.getInstance().setPersistenceEnabled(true);
           
        }
    }
    

    并将清单更改为

    <application
        android:name=".APP NAME"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
    

    【讨论】:

    • 首先感谢您的回答,我知道如何显示离线消息,但在这个问题中,我要求的是,当离线用户发送消息时,它会被缓存,直到用户获得互联网连接,我想在 recyclerview 中显示此缓存消息(尚未同步),并且在大于 4.2.2 的 android 版本中自动工作,所以我想对 4.2.2 及更低版本做同样的事情
    • @Hamdy okey 误解你想从缓存中显示消息
    • 是的,缓存用于同步到实时数据库的消息,直到用户有互联网连接
    猜你喜欢
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多