我看到Firebase网站上有很多文档来帮助我们优化资源的使用,但是,我还没有找到所用资源的详细示例。 这对我了解如何构建应用程序以及从性能和成本方面更好地选择策略很有用。
以机器人为例
我了解当我执行以下操作:
query.addListenerForSingleValueEvent(...);
所有引用都“查询”到数据库,因此这是一个查询,但会删除所有对象。
如果我这样做:
query.addValueEventListener(...);
连接保持打开状态,但是会在一定时间间隔内保持连接状态吗? 或者在计费方面被视为单个连接? 在数据库更改之后,它会再次查询所有对象吗?
总的来说,与使用监听引用的realtime-db功能相比,发出单个请求要重多少钱?
也许文档中有一部分对此进行了解释,但我没有找到它。
答案 0 :(得分:1)
query.addListenerForSingleValueEvent(...);
查询到的所有引用”到数据库 查询,但删除所有对象。
它将一次侦听您正在查询的子对象内的对象,而不是数据库中的所有对象。
query.addValueEventListener(...);
连接保持打开状态,但会保持打开状态 时间间隔?
它没有间隔,而是每当对数据库进行更改时便会监听,可以说您从数据库中更改了某些值,这将触发您的addValueEventListener
。这只会在某些值更改到您的数据库中时消耗资源,因此使用情况将随数据库使用情况而变化,相反,addListenerForSingleValue
将仅触发一次以查询您的数据,并且我们可以确保它消耗的网络更少而不是总是聆听某些更改以带入您的应用程序的侦听器
检查此有用的链接:https://www.firebase.com/docs/java-api/javadoc/com/firebase/client/ValueEventListener.html