android - 如何在每次启动应用程序时不从 Firebase 中提取数据#AskFirebase
问题描述
我正在为健身房构建一个应用程序,该应用程序在应用程序启动时在 recyclerview 中显示健身房成员信息,问题是在每次新启动应用程序时,数据都会从 firebase 数据库中提取,并在 4-5 秒后突然出现在 recyclerview 中应用程序启动后,我认为这个时间会随着数据的增长而增加。
如果数据相同,为什么每次都拉它。
但我想更进一步
我想要的是当用户第一次登录时,所有喜欢该帐户的数据都应该被提取并存储在本地,即使用户连接到互联网,我也不想再提取数据,更改无论创建多少数据,用户都应该在实时数据库和本地进行,这样我就不需要在用户登录后再次提取数据,而只需在每次数据更改或增长或被删除时推送数据,操作将发生在本地存储以及实时数据库中,因此用户将始终可以本地访问他创建的数据。
如果他再次登录,同样的事情会再次发生。
有没有办法在不实现本地 sqlite 数据库和 firebase 实时数据库的情况下使用 firebase 来做到这一点。
解决方案
此答案适用于数据存储在本地以及远程服务器上的用例 - 类似于问题中的内容。它可能不会具体回答问题,但可能会导致解决方案。
在问题中,似乎本地数据和远程存储的数据基本相同 - OP 使用 sql 在本地存储,使用 Firebase 远程存储。这样做是为了“加快”加载过程并降低读取量。
我的建议是仅使用 Firebase。它的速度非常快,如果编码正确,加载时间绝不应该是 4-5 秒后用户可以使用 UI(如果不使用持久性,则除非互联网连接不良)。
此外,Firebase 以两种方式提供本地持久化数据;缓存数据和持久数据(相似但请继续阅读)
缓存:Firebase 应用会自动处理临时网络中断。缓存数据在离线时可用,Firebase 会在网络连接恢复时重新发送任何写入。
和
持久化:通过启用持久性,Firebase 实时数据库客户端在在线时同步的任何数据都会持久化到磁盘并且可以离线使用,即使用户或操作系统重新启动应用程序也是如此。这意味着您的应用程序可以使用存储在缓存中的本地数据像在线一样工作。侦听器回调将继续触发本地更新。
还有更多内容,请参阅iOS Offline Persistence和Enable Offline Capabilities on Android
推荐阅读
- python - 在字符串中查找最长的数字子序列
- reactjs - 如何使用带有现有按钮的 react material-ui 快餐栏?
- python - 如何通过 Python Scrapy 蜘蛛解析嵌入的链接
- java - 为什么使用 ClassLoader 读取资源
- android - Android“未安装应用程序”错误 - 无法删除 .tmp 文件
- python - 强制单击突出显示按钮但不单击它?- 蟒蛇硒
- mysql - ERROR 1093 (HY000): 您不能在 FROM 子句中指定目标表 `article` 进行更新
- c# - IdentityServer4、本地 API、外部 REST 客户端
- angular - 无法从 Promise 的 Typescript / Angular 10 调用类函数
- c - 创建一个不强制转换的 sockaddr