
第一次听众发射需要花费很多时间(约40秒),后续负载需要较少的时间(大约1秒),如何加快第一次加载?
我给了,
FirebaseDatabase.getInstance().setPersistenceEnabled(true);在活动开始时.
DatabaseReference ref = FirebaseDatabase.getInstance().getReference(""); ref.keepSynced(true); ref.addValueEventListener(new ValueEventListener() { @OverrIDe public voID onDataChange(DataSnapshot dataSnapshot) { } @OverrIDe public voID onCancelled(DatabaseError databaseError) { } });解决方法:
如果您正在使用监听器,则需要知道您正在尝试通过Internet读取数据.您无法将此与尝试读取sqlite数据库进行比较,该数据库本地存储在磁盘上.从Firebase服务器获取数据的速度取决于您的Internet连接速度以及您尝试获取的数据量.所以很可能等待这么多的原因之一就是其中之一.如果原因是数据量大,请尝试优化查询或尝试将数据分成小部分.
如果我们说第一次尝试读取记录,它可能比后续的慢,因为它必须启动互联网连接.我知道Firebase团队正在尝试提高性能,但在通过网络检索数据时,您不能指望0ms.
根据你的评论,我需要告诉你更多的事情.当您连接到服务器时,无法强制从缓存中检索数据,因为当您未连接到服务器时,无法停止从缓存中检索数据.
当设备永久脱机或您的应用程序暂时失去其网络连接而您无法更改此行为时,Firebase会被设置为从chache中检索数据.
编辑:
因此,要获取FirebaseDatabase对象,您需要使用以下代码行:
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();然后要获取DatabaseReference,您需要使用以下行.
DatabaseReference rootRef = firebaseDatabase.getReference();我相信你需要在你的活动中提供一个以上的参考资料.假设您将使用两个:
DatabaseReference usersRef = rootRef.child("users");DatabaseReference postRef = rootRef.child("post");您现在可以在这些引用中为每个引用添加一个侦听器,如下所示:
ValueEventListener eventListener = new ValueEventListener() { @OverrIDe public voID onDataChange(DataSnapshot dataSnapshot) { //code to get the data } @OverrIDe public voID onCancelled(DatabaseError databaseError) {}};usersRef.addListenerForSingleValueEvent(eventListener);删除监听器的代码就像我在post的回答中所解释的那样.
别忘了,onDestroy()并不总是被调用.
总而言之,您创建单个数据库连接,使用所需的引用数量,相应地添加侦听器,然后根据您的活动生命周期进行删除.
总结以上是内存溢出为你收集整理的android – Firebase监听器第一次调用需要时间全部内容,希望文章能够帮你解决android – Firebase监听器第一次调用需要时间所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)