Комнатная вставка Завершается, перестают работать после двух или трех вставок - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть простая вставка в ROOM, но по странной причине моя вставка не работает в моем приложении после двух или трех вставок.Есть другое странное поведение, при вставке у меня вставка удалась, но при просмотре в БД ничего нет.

DAO

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(entryTable: EntryTable): Completable

ViewModel

entryRepository.saveEntryTable(EntryTable(fieldId, entryId, tabId, index))
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({
                    Timber.d("<<<<<row saved!")
                    result.value = Status.SUCCESS
                }, {
                    Timber.e(it)
                    Timber.d("<<<<<<<<<<<row not saved!")
                    result.value = Status.ERROR
                })

OnSubscribe всегда запускается, но после двух вставок в db ничего не появляется, и в моем журнале нет ошибок.

Также нет заменыпотому что каждый раз, когда появляется новый PK.

Edit

Вот больше информации об этой проблеме:

Странная вещь, это похоже наБаза данных комнаты в некотором роде копируется в память, когда мое приложение ищет новые записи, я могу их получить, например (выбрать * из entry_table), и показать их пользователю.Но если я остановлю приложение и перезапущу его, строка исчезнет (так как их нет в БД) ..

1 Ответ

0 голосов
/ 26 февраля 2019

Я нашел ответ, или я мог бы найти решение, но на данный момент я не понимаю, почему это поведение изменилось, потому что я ничего не изменил в своем приложении.

При изменении JournalMode с WRITE_AHEAD_LOGGING (или автоматически) на TRUNCATE все мои изменения выполняются непосредственно в БД, и у меня нет странной БД в памяти.

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