Некоторое хорошее фоновое чтение https://sqlite.org/wal.html
Ответ на 3. Используйте https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase#disableWriteAheadLogging () в onConfigure
SQLiteOpenHelper (или в вашем случае вам, вероятно, придется расширить и переопределить класс SugarDb, чтобы сделать это.
Вам, вероятно, придется также расширить getInstance
, чтобы вернуть ваш экземпляр вашего собственного класса (и не вызывать super, я думаю, что в этом переопределении) ), затем, когда вы вызываете SugarDb.getInstance()
, вы вызываете getInstance
в расширенном классе.
Ответ на вопрос 2. Как говорит @CommonsWare, если ваша БД закрыта правильно, то все данные передаются в файл БД из Файл Wal при закрытии.
Обновление: Просмотр https://github.com/chennaione/sugar/blob/master/library/src/main/java/com/orm/SugarDb.java
Каждый раз, когда вы звоните SugarDb.getReadableDatabase()
или SugarDb.getWritableDatabase()
вам должен позвонить SugarDb.close()
Самый простой способ сделать это, как только вы закончите текущие операции с базой данных, так как вы не можете запросить его счетчик соединений, или вы можете поддерживать свой собственный счет и закрываться в разное время в жизненный цикл приложений, например onPause
или onDestroy
или до наша попытка сделать резервную копию
Ответ на вопрос 1. https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase#isWriteAheadLoggingEnabled ()