Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Firebase数据库未正确同步_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Firebase数据库未正确同步

Java Firebase数据库未正确同步,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在尝试制作一个聊天应用程序。为此,我使用firebase数据库。并使用FirebaseRecyclerAdapter显示消息 mNewAdapter = new NewChatRecyclerAdapter( ChatMessageItem.class, R.layout.message_item, RecyclerView.ViewHolder.class, ref.l

我正在尝试制作一个聊天应用程序。为此,我使用firebase数据库。并使用FirebaseRecyclerAdapter显示消息

 mNewAdapter = new NewChatRecyclerAdapter(
                    ChatMessageItem.class,
                    R.layout.message_item,
                    RecyclerView.ViewHolder.class, ref.limitToLast(300).orderByChild("timestamp"), isAMod, publicroom, Fusername, booIsPrivateChat, chatid, otheruser);
而对于同步

ref.limitToLast(300).orderByChild("timestamp").keepSynced(true);
但每次我重新打开应用程序,都需要3-5秒来加载所有新消息。 那么我该如何解决这个问题


Thanx提前…

启用脱机功能,以便应用程序缓存这些数据

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Firebase数据库仅在与服务器有活动连接时同步数据。这通常仅在应用程序处于活动状态时发生,因为Android在应用程序处于非活动状态时关闭连接

当存在连接时,Firebase SDK通常仅在某个位置有活动侦听器时同步该位置中的数据。当你

调用
keepSynced(true)
对应用程序中的主列表最有用,例如在主活动中显示的数据。通过保持同步,当您的用户处于不同的屏幕时,它也将被更新。这样,当他们回到主要活动时,数据立即可用


为了减少用户在重新启动应用程序时必须等待的时间,您可以。由于从磁盘加载通常比从网络加载快,这可能会加快速度。

问题出在哪里?它不会在后台同步新数据@FrankvanPuffelenFirebase只会在应用程序处于活动状态时同步数据。调用
keepSynced
不会改变这一点。请参阅下面我的答案以获得更详细的解释。我这样做了,所有内容都被缓存并在脱机模式下工作。但在我关闭活动后同步不起作用