База данных библиотеки комнат не сохраняет данные - PullRequest
0 голосов
/ 05 мая 2020

Итак, я внедрил базу данных Room Library в свой проект в Android Studio. Проблема в том, что каждый раз, когда я закрываю приложение, данные теряются.

Я выполнил пустую миграцию:

static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
    // Since we didn't alter the table, there's nothing else to do here.
}
};

Как показано на Medium

Я пытался изменить номер версии базы данных несколько раз, но это не помогло.

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

РЕДАКТИРОВАТЬ: вот как я инициализирую:

 @Volatile
    private var INSTANCE: MyDatabase? = null
    private const val NUMBER_OF_THREADS = 4
    val databaseWriteExecutor: ExecutorService =
        Executors.newFixedThreadPool(NUMBER_OF_THREADS)

    val MIGRATION_1_2: Migration = object : Migration(1, 2) {
        override fun migrate(database: SupportSQLiteDatabase) {

        }
    }

    fun getDatabase(application: Application): MyDatabase? {
        if (INSTANCE == null) {
            synchronized(MyDatabase::class.java) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(
                        application.applicationContext,
                        MyDatabase::class.java, DATABASE_NAME
                    )
                        .createFromAsset(DATABASE_DIR)
                        .addMigrations(MIGRATION_1_2)
                        .build()
                }
            }
        }
        return INSTANCE

1 Ответ

0 голосов
/ 05 мая 2020

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

Также было бы неплохо прочитать https://medium.com/androiddevelopers/packing-the-room-pre-populate-your-database-with-this-one-method-333ae190e680

...