Android Firebase: OutOfMemoryError - Синхронизация - PullRequest
0 голосов
/ 06 января 2019

Мое приложение падает из-за большого количества данных, которые необходимо синхронизировать. 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 голосов
/ 06 января 2019

С помощью того кода, который вы написали, вы просите SDK синхронизировать содержимое ENTIRE вашей базы данных каждый раз, когда что-то меняется. Это означает, что все содержимое памяти должно постоянно находиться в памяти. Это, вероятно, не очень хорошая идея, если только вы не знаете, что размер вашей базы данных ограничен.

Вместо этого попробуйте постоянно синхронизировать часть базы данных, и только если вы все время понимаете ее требования к памяти. Если часть базы данных может стать неограниченной, вы почти наверняка не захотите делать это вообще. Поскольку вы на самом деле не сказали, какова ваша цель, вы можете просто не делать этого, пока не получите четкую цель для постоянной синхронизации.

Даже если вы синхронизируете только один раз (с помощью addEventListenerForSingleEvent), все содержимое ссылки по-прежнему должно полностью помещаться в памяти одновременно. Так что подумайте о том, что вы пытаетесь сделать здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...