android - 只需获取新添加的 Child Firebase android
问题描述
我正在尝试获取firebase上新添加的孩子的参考或快照我已经通过不同的方式解决它
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
}
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s)
{
}
我的问题是两者都返回一个完整的快照意味着firebase中的所有这些节点有没有办法获得新添加的子节点(“这将提高速度”)
解决方案
当您将侦听器附加到某个位置或查询时,侦听器最初将使用该位置存在的所有数据或与查询匹配的所有数据触发。数据库没有“新”数据的概念,尽管您的应用程序可能有这个概念。
有几个选项可以减少检索到的数据或传递给侦听器的数据:
如果您使用磁盘持久性,应用程序可能在其磁盘缓存中拥有数据的先前快照。在这种情况下,仅从服务器检索前一个快照和当前快照之间的增量。但是整个当前快照会传递给您的侦听器,以便您可以正确呈现当前数据的 UI。
如果您只想处理某个时刻以来的数据,则只需从数据库中请求该数据。您通常可以通过将上次处理的数据的键存储在本地状态中来做到这一点,然后使用这样的查询来仅获取新的更新:
myRef.orderByKey().startAt("mostRecentKeyWeHaveAlreadyProcessed").add...Listener
推荐阅读
- sql - SQL Server,将列中的所有值与另一个值的一些值连接起来
- javascript - 自动滑块动画不起作用
- java - 从返回 CompletableFuture 的异步方法的同步部分抛出异常
- reactjs - 没有在 componentDidMount 中调用 Curried 函数
- spring-boot - 春季数据JPA搜索忽略单词顺序
- gmail-api - 如何使用 Gmail API 从委托帐户发送电子邮件
- sql - 在循环 SQL 查询中捕获多个错误
- c# - WebJobs 中的 IConfiguration
- python - PyList_New 的链接器错误
- css - MiniCssExtractPlugin 相对于 ExtractTextPlugin 的优势?