还是关闭应用程序?我该如何获取这些数据?
据我了解,firebase实时数据库存储数据,当数据发生更改时,您可以检索修改后的数据。该应用程序检测到fb实时数据库发送的事件,然后下载新数据。这仅对新添加的数据有用,但是假设您关闭了该应用程序。 ¿您是否有上次会议的数据?让我们举个例子,像whatsapp这样的应用程序。用户将新消息发送到rt数据库,然后firebase发送事件,应用程序检测到该事件,然后下载并显示新数据。但是,如果您关闭并重新打开该应用程序怎么办?消息仍在显示吗?
如果没有,我如何访问该数据?我应该自己将数据保存在sqlite数据库中吗?
//编辑: 该应用程序的预期工作方式为: 修改数据后,下载新数据。数据下载后关闭应用程序时,我希望该数据(以及该应用程序已下载的所有先前数据)仍然存在,因此我可以在重新打开应用程序时显示数据。当应用程序关闭或没有互联网时,该应用程序将等待直到有互联网并且打开应用程序以下载新数据。我还不了解的部分是:关闭新应用程序后,从服务器下载的数据是否从应用程序中消失了?或者,如果您不将其保存在自己的本地数据库中,它确实会从应用程序内存中永久消失?
答案 0 :(得分:0)
您有上次会话的数据吗?
绝对。如果您使用以下代码行:
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
即使您的设备离线,您的数据也将可用。
但是,如果您关闭并重新打开应用程序怎么办?消息仍在显示吗?
您从“上一会话”中获取所有数据。
在谈论实时获取数据的侦听器时,请不要忘记根据您活动的生命周期将其删除,正如我在此 post 中的回答所解释的那样>。
Here ,您还可以找到有关不删除侦听器的更多信息。
编辑:
下载数据后关闭应用程序时,我希望该数据(以及该应用程序已下载的所有先前数据)仍然存在
这肯定会发生。
当应用关闭或没有互联网时,应用将等待直到有互联网并且打开应用以下载新数据。
如上所述,如果启用了离线持久性,就会发生这种情况。
在关闭新应用程序后,从服务器下载的数据是否从应用程序中消失?
不,不是。
或者如果您不将其保存在自己的本地数据库中,它确实会从应用程序内存中永久消失?
不会消失。不需要任何其他数据库。
答案 1 :(得分:0)
您的应用程序在后台(关闭)时,不能使用注册的侦听器来维护本地数据与firebase数据库上的在线数据的同步。
当用户重新打开应用程序时,数据将自动重新同步以从数据库中获取最新数据。参见:https://firebase.google.com/docs/database/android/offline-capabilities
如果您想在应用关闭时向用户发送通知消息(如新消息或其他消息),最好的选择是使用Firebase Cloud Messaging:您可以发送显示给用户的通知消息(即使应用已关闭),或发送数据消息并完全确定您的应用代码中会发生什么。