我需要在Room数据库中创建一些初始状态。我在onCreate回调中这样做:
10
在添加破坏性迁移之前,此方法非常有效。所有应用程序数据均来自服务器。当前没有理由编写迁移,因为该应用程序在登录时已同步。
val database = Room.databaseBuilder(context, MyDatabase::class.java, "mydatabase").addCallback(object : RoomDatabase.Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
database.myDao().initialize()
}
})
.build()
问题在于myDao.initialize()中执行的初始化被清除了,并且似乎即使迁移是破坏性的,也不会再次调用onCreate。
有没有一种好方法来解决此问题,而无需为每个数据库版本编写自定义迁移?
IE可以编写针对每个数据库版本运行的破坏性迁移,还可以调用我的initialize()函数吗?