首页 > 解决方案 > Android Firebase:OutOfMemoryError - 同步

问题描述

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

标签: androidfirebasefirebase-realtime-database

解决方案


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

相反,请考虑始终保持数据库的一部分同步,并且只有在您始终了解其内存需求的情况下。如果数据库的一部分可以无限增长,您几乎可以肯定根本不想这样做。由于您还没有真正说出您的目标是什么,您可能需要考虑在您有一个明确的持续同步目标之前不要这样做。

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


推荐阅读