如果firebase实时数据库没有触发数据获取,除非有修改过的数据,那么离线数据库如何工作?

问题描述 投票:0回答:2

或关闭应用程序?我如何访问该数据?

据我所知,firebase实时数据库存储数据,当产生数据更改时,您可以检索修改后的数据。应用程序检测fb实时数据库发送的事件,然后下载新数据。这仅适用于新添加的数据,但我们假设您关闭了该应用。你有上一次会议的数据吗?让我们举个例子,像whatsapp这样的应用程序。用户将新消息发送到fb rt数据库,然后firebase发送事件,应用程序检测到该事件,然后下载新数据并显示它。但是,如果你关闭并重新打开应用程序呢?消息是否仍在显示?

如果没有,我如何访问该数据?我应该自己在sqlite数据库上保存数据吗?

//编辑:应用程序的工作方式是:修改数据后,下载新数据。在下载数据后关闭应用程序时,我希望该数据(以及应用程序已下载的所有先前数据)仍然存在,因此我可以在重新打开应用程序时显示数据。当应用程序关闭或没有互联网时,应用程序会等到互联网和应用程序打开以下载新数据。我不理解的部分是:关闭应用程序后,当有新数据从应用程序中消失时,从服务器下载的数据是否会消失?或者,如果您不将其保存在自己的本地数据库中,它会从应用程序内存中永久消失?

android firebase
2个回答
0
投票

你有上次会议的数据吗?

绝对。如果您使用以下代码行:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

即使您的设备脱机,您的数据也可用。

但是,如果你关闭并重新打开应用程序呢?消息是否仍在显示?

您将获得“上一个会话”中的所有数据。

在谈论实时获取数据的听众时,请不要忘记根据活动的生命周期将其删除,如我在post的回答中所述。

Here你也可以找到关于你不删除监听器的情况的更多信息。

编辑:

在下载数据后关闭应用程序时,我希望该数据(以及应用程序已下载的所有先前数据)仍然存在

这肯定会发生。

当应用程序关闭或没有互联网时,应用程序会等到互联网和应用程序打开以下载新数据。

如上所述,如果要启用脱机持久性,则会发生这种情况。

关闭应用程序后,当有新数据从应用程序中删除时从服务器下载的数据是否会消失?

不,不是的。

或者,如果您不将其保存在自己的本地数据库中,它会从应用程序内存中永久消失?

不会消失。不需要任何其他数据库。


0
投票

当您的应用程序处于后台(关闭)时,它无法使用已注册的侦听器来维护本地数据与firebase数据库上的联机数据的同步。

当用户重新打开应用程序时,数据会自动重新同步以从数据库中获取最新数据。见:https://firebase.google.com/docs/database/android/offline-capabilities

如果您想在应用关闭时向用户通知某些内容(如新消息或其他内容),最好的办法是使用Firebase云消息:您可以发送显示给用户的通知消息(即使应用已关闭) ),或发送数据消息并完全确定应用程序代码中发生的情况。

© www.soinside.com 2019 - 2024. All rights reserved.