Firebase多个查询瓶颈

时间:2018-05-27 10:12:35

标签: android firebase android-fragments asynchronous firebase-realtime-database

我有ViewPager,它拥有2个不同的片段。在这两个片段中,我尝试使用addValueEventListener查询firebase数据库。这是参考 -

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

    }
    return mDatabase;
}

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您不想在后台加载数据并显示缓存中的初始项目并坚持当前的实现,那么我想建议您,从包含{{1的活动管理所有这些内容}}。只需一次又一次地执行查询,或者异步执行查询,并在使用ViewPager或类似内容从Firebase收到结果后将结果发布到片段。

希望有所帮助!