使用
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
即使用户连接良好,是否可以保证在应用程序生命周期内仅下载一次数据/重新启动应用程序?
注意:目前(至少对我来说)官方文档尚不清楚。
通过启用持久性,即使用户或操作系统重新启动应用程序,Firebase Realtime Database客户端在联机时将同步的任何数据也将持久保存到磁盘,并且可以脱机使用。这意味着您的应用程序将通过使用存储在缓存中的本地数据来像联机运行一样工作。侦听器回调将继续触发本地更新。
答案 0 :(得分:2)
启用持久性的唯一目标是确保应用程序继续运行,即使用户在没有与Firebase服务器的连接时启动它也是如此。
客户端确实在连接时将其还原的本地状态的哈希值树发送到服务器,服务器随后仅将其发送回修改后的段。但是不能保证发送或保存多少数据。
如果您想了解有关Firebase实际功能的更多信息,我强烈建议enabling debug logging并在logcat上研究其输出。
有关该主题的更多信息,请参见Firebase's synchronization strategy上的这些问题。