首页 > 解决方案 > Firebase 多查询瓶颈

问题描述

我有 ViewPager 包含 2 个不同的片段。在这两个片段中,我都在尝试使用addValueEventListener. 这是参考 -

public static DatabaseReference getDatabase() {
    if (mDatabase == null) {
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);
        mDatabase = FirebaseDatabase.getInstance().getReference();

    }
    return mDatabase;
}

第一个Fragment有 500 多个项目(加载大约需要 8 秒),第二个有 20-30 个。问题是第二个片段总是等待第一个片段完成,然后再查询第二个片段。有没有办法让我分开或做点什么?我真的需要第二个Fragment更快地加载。提前致谢。

标签: androidfirebaseandroid-fragmentsasynchronousfirebase-realtime-database

解决方案


如果我必须解决这个问题,我会认为整体情况会像@Mark 在评论中建议的那样有点不同。我会在 Firebase 上实现一个分页查询,这样我就不必一次获取所有 500 多行。

除此之外,我想离线存储从 Firebase 获取的数据。因此,每次应用程序加载时,数据都会填充到之前获取的两个片段中。我将在后台异步运行查询,用户不必等待查询完成即可查看两个片段中的数据。查询完成加载后,我将使用新获取的数据相应地更新视图,同时更新本地缓存,下次启动应用程序时将需要该缓存来提供数据。

如果您对在后台加载数据并显示缓存中的初始项目并坚持当前的实现不感兴趣,那么我想建议您,从包含ViewPager. BroadcastReceiver只需让查询一个接一个地执行,或者异步执行,并在从 Firebase 使用或类似的东西接收到结果后将结果发布到片段。

希望有帮助!


推荐阅读