Android Firebase:OutOfMemoryError-同步

时间:2019-01-05 22:10:44

标签: android firebase firebase-realtime-database

我的应用由于需要同步的大量数据而崩溃。 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没有这种方法。 有人有类似的问题可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

使用您编写的代码,您要求SDK每次发生更改时都同步数据库的整个内容。这意味着内存的所有内容必须始终都在内存中。除非您知道数据库的大小受限制,否则这可能不是一个好主意。

考虑并始终保持数据库的一部分一直同步,并且前提是您始终了解数据库的内存要求。如果数据库的一部分可以无限增长,那么几乎可以肯定您根本不想这样做。由于您尚未真正说出目标是什么,因此您可能要考虑不这样做,直到您有明确的恒定同步目标为止。

即使仅同步一次(使用addEventListenerForSingleEvent),引用的全部内容仍需要一次完全放入内存中。因此,请仔细考虑您要在这里做什么。