android - Firebase 多查询瓶颈
问题描述
我有 ViewPager 包含 2 个不同的片段。在这两个片段中,我都在尝试使用addValueEventListener
. 这是参考 -
public static DatabaseReference getDatabase() {
if (mDatabase == null) {
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
mDatabase = FirebaseDatabase.getInstance().getReference();
}
return mDatabase;
}
第一个Fragment
有 500 多个项目(加载大约需要 8 秒),第二个有 20-30 个。问题是第二个片段总是等待第一个片段完成,然后再查询第二个片段。有没有办法让我分开或做点什么?我真的需要第二个Fragment
更快地加载。提前致谢。
解决方案
如果我必须解决这个问题,我会认为整体情况会像@Mark 在评论中建议的那样有点不同。我会在 Firebase 上实现一个分页查询,这样我就不必一次获取所有 500 多行。
除此之外,我想离线存储从 Firebase 获取的数据。因此,每次应用程序加载时,数据都会填充到之前获取的两个片段中。我将在后台异步运行查询,用户不必等待查询完成即可查看两个片段中的数据。查询完成加载后,我将使用新获取的数据相应地更新视图,同时更新本地缓存,下次启动应用程序时将需要该缓存来提供数据。
如果您对在后台加载数据并显示缓存中的初始项目并坚持当前的实现不感兴趣,那么我想建议您,从包含ViewPager
. BroadcastReceiver
只需让查询一个接一个地执行,或者异步执行,并在从 Firebase 使用或类似的东西接收到结果后将结果发布到片段。
希望有帮助!
推荐阅读
- r - R:霍尔特模型。无法绘制时间序列预测(预测)
- leaflet - popupopen 事件处理程序在弹出窗口实际打开之前运行
- odoo-11 - odoo 11 - 编辑资源合作伙伴记录不起作用
- rails-activerecord - 计算 ActiveRecord 子自定义属性的最佳方法?
- c# - 门户中的 Azure Functions 应用程序开发人员脚本编译失败。异步
- javascript - 移相器中的寻路动画
- c# - C# 字符串自定义格式以添加尾随零
- python - 无法在不指定完整路径的情况下运行 python 脚本
- r - 在 data.table 和/或 dplyr 中跨组和列应用函数
- flutter - 不良状态:Future 已经在 Flutter 中完成