Комната Android: DAO больше 1048576 - PullRequest
2 голосов
/ 12 марта 2019

У меня есть 11Mb файл JSON, и этот файл будет записан на Dao, но когда я сохраню все данные. Я получил эту ошибку;

/data/user/0/com.test.save/databases/ChannelDb-wal 6946352 bytes: Bigger than 1048576; truncating

Мои коды;

AppDatabase dbRoom = Room.databaseBuilder(getApplicationContext(),
        AppDatabase.class, Constants.CHANNEL_DB).build();

AndroidNetworking.get(user.getRemote())
        .setTag(Constants.GET_CHANNEL_LIST)
        .setPriority(Priority.HIGH)
        .build()
        .getAsOkHttpResponseAndParsed(new TypeToken<List<Channel>>() {
        }, new OkHttpResponseAndParsedRequestListener<List<Channel>>() {
            @Override
            public void onResponse(Response okHttpResponse, List<Channel> channels) {
                AsyncTask.execute(() -> dbRoom.channelDao().insertAll(channels));
            }

            @Override
            public void onError(ANError anError) {
                Log.d(TAG, "Check 4");
                hideProgress();
                Toast.makeText(getApplicationContext(), getResources()
                        .getString(R.string.an_error), Toast.LENGTH_LONG).show();
                Crashlytics.log(Log.DEBUG, TAG, anError.getErrorDetail());
            }
        });

1 Ответ

3 голосов
/ 12 марта 2019

this WAL имеет ограничение в 1 МБ, в то время как окно курсора на Android имеет жесткий предел в 2 МБ.

, поэтому это довольно бессмысленно, то, что вы пытаетесь достичь, даже если отключить WAL.

, потому что даже если вам удастся каким-либо образом вставить, вы не сможете получить его снова.

в принципе, у вас есть два возможных варианта:

a) проанализировать JSON и добавить его как отдельные записи или

b) сохранить файл в файловую систему и сохранить его путь.

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