如果Firebase实时数据库除非修改了数据,否则不会触发数据获取,那么脱机数据库如何工作?

时间:2018-11-28 17:01:34

标签: android firebase

还是关闭应用程序?我该如何获取这些数据?

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

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

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

2 个答案:

答案 0 :(得分:0)

  

您有上次会话的数据吗?

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

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

即使您的设备离线,您的数据也将可用。

  

但是,如果您关闭并重新打开应用程序怎么办?消息仍在显示吗?

您从“上一会话”中获取所有数据。

在谈论实时获取数据的侦听器时,请不要忘记根据您活动的生命周期将其删除,正如我在此 post 中的回答所解释的那样>。

Here ,您还可以找到有关不删除侦听器的更多信息。

编辑:

  

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

这肯定会发生。

  

当应用关闭或没有互联网时,应用将等待直到有互联网并且打开应用以下载新数据。

如上所述,如果启用了离线持久性,就会发生这种情况。

  

在关闭新应用程序后,从服务器下载的数据是否从应用程序中消失?

不,不是。

  

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

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

答案 1 :(得分:0)

您的应用程序在后台(关闭)时,不能使用注册的侦听器来维护本地数据与firebase数据库上的在线数据的同步。

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

如果您想在应用关闭时向用户发送通知消息(如新消息或其他消息),最好的选择是使用Firebase Cloud Messaging:您可以发送显示给用户的通知消息(即使应用已关闭),或发送数据消息并完全确定您的应用代码中会发生什么。