栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

getChildrenCount()如何在后台工作?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

getChildrenCount()如何在后台工作?

使用DataSnapshot的

getChildrenCount()
方法时,并不表示您正在遍历整个
DataSnapshot
对象。相反,如果您使用的是DataSnapshot的
getChildren()
方法,那么您正是在这样做。让我们举个例子,假设您有一个名为的节点
users
,可以说拥有5000多名用户。

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();DatabaseReference usersRef = rootRef.child("users");ValueEventListener valueEventListener = new ValueEventListener() {    @Override    public void onDataChange(DataSnapshot dataSnapshot) {        long numberOfUsers = dataSnapshot.getChildrenCount(); // Count the number of users        //This is called iteration        for(DataSnapshot ds : dataSnapshot.getChildren()) { // Get user object on every iteration        }    }    @Override    public void onCancelled(@NonNull DatabaseError databaseError) {}};usersRef.addListenerForSinglevalueEvent(valueEventListener);

由于Firebase数据库中的每个节点都是a

Map
,因此DataSnapshot也可以称为a
Map


DataSnapshot实例包含Firebase数据库位置中的数据。每次读取数据库数据时,您都会以DataSnapshot的形式接收数据。

因此,如果要将

DataSnapshot
对象强制转换为
Map
,则以下代码行将非常好:

Map<String, Object> map = (Map<String, Object>) dataSnapshot;

因此调用

getChildrenCount()
一个对
DataSnapshot
对象就像调用
size()
一个方法
Map
,它在内部统计它所包含的对象的数量。

我在浪费阅读资源

对于新的Cloud Firestore数据库,此功能可用,其中根据您对Firestore数据库执行的CRUD操作数向您收费。如果您有兴趣,可以通过这种方法计算CloudFirestore中集合下的文档数。如您所见,除了经典的计数操作外

+=
,我们还有
task.getResult().size()
。我还提到过,存储计数器的最佳实践是将它们存储在Firebase实时数据库中。因此,我认为,请继续进行此操作并将其分别存储。

如果您认为应用程序将快速增长,那么另一种方法是,每次在您的节点中添加或删除用户时,都可以使用Cloud
Functions更新用户计数器

users
。该技术适用于大型数据集。

并回答您的问题:

getChildrenCount()是否将我的用户的最新检索数量存储在某个地方?每次我运行我的应用以在每个孩子中用+
=进行计数时,getChildrenCount()是否都会执行?

如果您认为最新检索到的号码以某种方式存储在磁盘/内存中,则不会。每次打开应用程序时,

getChildrenCount()
都会调用方法来获取最新的用户数。如果要实时获得该号码,则应在
users
参考上附加一个侦听器。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596302.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号