我正在开发一个Android应用程序,以与Firestore中的缓存数据库一起使用。
在尝试使其与低内存设备(具有1GB和2GB RAM的设备)一起使用后,我遇到了一个问题。查询将永远占用并占用大部分应用程序内存-请注意,我使用的列表大约有10.000个文档。 一个文档的结构很简单,有10个字符串字段。
这是分析器中的内存使用示例: https://i.ibb.co/MPd9h5g/profiler.png
我尝试使应用程序使用更少的数据,从而使性能更快。随着数据库的大小,它变得越来越慢。
与服务器上的数据库收集同步:
FirebaseFirestore client = FirebaseFirestore.getInstance();
final Query query = client.collection("collection_name").orderBy("name");
ListenerRegistration snapshotListener = query.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot querySnapshot, @Nullable FirebaseFirestoreException e) {
// success
}
});
从服务器进行收集同步后(可能需要几分钟),我正在使用强制缓存源执行查询,如下所示:
Source source = Source.CACHE;
client.collection("collection_name")
.limit(15)
.whereEqualTo("some_field", "some_value")
.orderBy("name").get(source);
如果我使用Source.SERVER实施它,它就可以正常工作。但是我的目标是能够从CACHE那里获得它。
是否有任何方法可以将内存中数据库位置移至存储,以避免内存使用? 还是通过其他方法使大型Firestore数据库与低内存设备一起工作而又不会造成痛苦的负担?
提前感谢您的帮助!