我的应用由于需要同步的大量数据而崩溃。 Firebase crashanalytics告诉我:
Firebase数据库遇到OutOfMemoryError。您可能需要减少要同步到客户端的数据量
我的代码是这样的:
public static DatabaseReference getRefFirebase() {
if (mDatabase == null) {
mDatabase = FirebaseDatabase.getInstance();
mDatabase.setPersistenceEnabled(true);
mDatabase.getReference().keepSynced(true);
}
return mDatabase.getReference();
}
因此它同步了所有数据库。我知道应用程序上的所有功能均不需要此功能,但我尚不知道如何解决。 我正在寻找一个SYNC请求,因此它只能同步一次,但显然Firebase没有这种方法。 有人有类似的问题可以帮助我吗?
答案 0 :(得分:1)
使用您编写的代码,您要求SDK每次发生更改时都同步数据库的整个内容。这意味着内存的所有内容必须始终都在内存中。除非您知道数据库的大小受限制,否则这可能不是一个好主意。
考虑并始终保持数据库的一部分一直同步,并且前提是您始终了解数据库的内存要求。如果数据库的一部分可以无限增长,那么几乎可以肯定您根本不想这样做。由于您尚未真正说出目标是什么,因此您可能要考虑不这样做,直到您有明确的恒定同步目标为止。
即使仅同步一次(使用addEventListenerForSingleEvent),引用的全部内容仍需要一次完全放入内存中。因此,请仔细考虑您要在这里做什么。