我想拥有的是使用addListenerForSingleValueEvent()
加载初始列表,在加载时显示进度栏,加载列表时隐藏进度栏,开始使用addChildEventListener()
的子项目更改。
我需要组合不同加载方法的原因是:
1)加载addListenerForSingleValueEvent()
并不能为我提供区分更新哪些项目的方法。保存先前的列表并在所有项目中迭代并找到每个匹配项可能很昂贵,因为列表最多可以长达20K项目。
2)使用addChildEventListener()
加载效果很好,但是没有办法知道列表是否事先具有项目,并且如果完成加载初始列表时,则无法显示进度栏。另外还有其他几个小原因。
所以我的问题是实现目标的最佳方法是什么?使用这两种方法的问题是加载两次列表。有没有办法解决这个问题?
firebase defup defup defupe the Listorers。如果有相同位置/查询的多个侦听器,则只能传输一次数据。
但是,如果您不信任系统,也可以使用限制查询来最大程度地减少重叠:
ref.limitToLast(1).addListenerForSingleValueEvent(...