Room fallbackToDestructive срабатывает каждый раз

Знакомлюсь с Room и пытаюсь собрать небольшой проект читая базу из папки ASSETS. Столкнулся с таким вопросом: При однятии версии базы данных выкидывает исключение и просит добавить МИГРАЦИЮ. Мне же достаточно просто перезаписывать базу из ассетов при поднятии версии. В доках для этой цели есть метод fallbackToDestructiveMigration() Но когда я указываю его в билдере по факту моя база данных перезаписывается при каждом старте приложения. Что мне нужно - ЧТО бы база перезаписывалась из ассетов только при поднятии версии приложения. и я не пойму как добиться такого поведения. Буду благодарен за помощь.

Вот как я все делаю:

Это простейший пример.

@Dao
NameDao
@Insert(entity = Name.class, onConflict = OnConflictStrategy.REPLACE)
void insertMe(Name name);

Далее база данных:

  @Database(version = 2, entities = [Name::class])
abstract class AppDatabase : RoomDatabase() {
    abstract fun nameDao(): NameDao
}

POJO

    @Entity(tableName = "tips_of_the_day")
data class Name(
    @ColumnInfo(name = "name")
    var name: String?
) {
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "_id")
    var id: Int = 0
}

Application

class App : Application() {
private lateinit var appDatabase: AppDatabase


override fun onCreate() {
    super.onCreate()
    appDatabase = getAppDatabase()
}

 fun getAppDatabase(): AppDatabase {

    return Room.databaseBuilder(
        this,
        AppDatabase::class.java, DATABASE_NAME
    )
        .createFromAsset("database/tips_of_the_day.db")
        .fallbackToDestructiveMigration()
        .allowMainThreadQueries()
        .build().also { appDatabase = it }

}

companion object {
    private const val DATABASE_NAME = "tips_of_the_day.db"
}

}

Ну и вот как вычитываю:

val db: AppDatabase = (application as App).getAppDatabase()
    val dataBase = db.nameDao()


    textView.setOnClickListener(){
        val name: Name = Name( "Anton")
        dataBase.insertMe(name)
        val tableSize: Int = dataBase.all.size
        toast("db size  : $tableSize")
        Log.d("TAG" , "db size  : $tableSize")
    }

Получается что код работает до момента перезапуска приложения и потом база затирается на дефолт(


Ответы (0 шт):