android - firebase on()/addValueEventListener 需要多少资源?
问题描述
我看到Firebase网站有很多文档可以帮助我们优化资源的使用,但是我没有找到使用资源的详细示例。这对我了解如何构建我的应用程序以及更好地选择性能和成本方面的策略很有用。
以安卓为例
我明白当我这样做时:
query.addListenerForSingleValueEvent(...);
所有引用都“查询”到数据库,因此这是一个查询,但会删除所有对象。
如果我做:
query.addValueEventListener(...);
连接保持打开状态,但它会继续按时间间隔建立连接吗?或者在计费方面可能被视为单一连接?并且在数据库发生更改后,它会再次查询所有对象吗?
一般来说,与使用实时数据库功能收听参考相比,发出单个请求要重多少和贵多少?
也许文档中有一节解释了这一点,但我没有找到。
解决方案
query.addListenerForSingleValueEvent(...);
所有查询的引用”到数据库,所以这是一个单一的查询,但删除了所有的对象。
它将侦听一次您正在查询的子对象内部的对象,而不是数据库中的所有对象。
query.addValueEventListener(...);
连接保持打开状态,但它会继续按时间间隔建立连接吗?
它没有间隔,而是在您的数据库发生更改时进行侦听,假设您更改了数据库中的某个值,这将触发您的addValueEventListener
. 这只会在某些值更改到您的数据库时消耗资源,因此使用情况将与您的数据库使用情况不同,相反,addListenerForSingleValue
只会触发一次以查询您的数据,我们可以确保它消耗的网络资源比监听器少总是倾听一些变化以引入您的应用程序
检查这个有用的链接:https ://www.firebase.com/docs/java-api/javadoc/com/firebase/client/ValueEventListener.html
推荐阅读
- javascript - JSON 中的条件过滤
- react-native - GraphQL SDL(aws appsync)中的“不能为不可为空的类型返回 null:父 'Messages' (/getMessages/sendBy) 中的 'Person'”
- mysql - 存储位置数据的最佳方式
- python-3.x - python html表只得到第一行
- mysql - 有没有办法优化这个查询?
- python - 找不到版本
- svn - SVN“...已经是不同 URL 的工作副本”问题和额外的 .svn 问题
- amazon-web-services - 使用 AWS Lambda 进行端口转发?
- javascript - 升级到 React Native 0.55.4 后,isMounted() 警告一直显示
- c++ - 如何使用 MFC 从 firefox 获取 url 但不使用 DDE?