Я не смог найти проблему не вставки данных в Room Database
при первом запуске приложения, но при перезапуске приложения вставляются данные. Почему не происходит вставка при первом запуске?
Мой код:
@Dao
interface FooDAO {
@Insert
suspend fun save(foo: Foo)
}
и класс базы данных такой же простой:
@Database(entities = [Foo::class], version = 1, exportSchema = false)
abstract class FooDatabase: RoomDatabase() {
// get dao
abstract fun getFooDao(): FooDAO
companion object{
@Volatile private var INSTANCE: FooDatabase? = null
fun getDatabase(context: Context): FooDatabase {
if (INSTANCE == null) {
synchronized(this) {
INSTANCE = Room.databaseBuilder(
context.applicationContext,
FooDatabase::class.java,
"my_db.db"
).fallbackToDestructiveMigration()
.addCallback(CALLBACK)
.build()
}
}
return INSTANCE!!
}
private val CALLBACK = object : RoomDatabase.Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
val fooDAO = INSTANCE!!.getFooDao()
CoroutineScope(Dispatchers.IO).launch {
fooDAO.save(Foo(1, "A"))
fooDAO.save(Foo(2, "B"))
fooDAO.save(Foo(3, "C"))
fooDAO.save(Foo(4, "D"))
fooDAO.save(Foo(5, "E"))
}
}
}
}
}
с кодом выше записи не вставляется при первом запуске приложения, но при перезапуске вставляются записи, как мы можем исправить эту проблему и заставить его вставлять записи и при первом запуске?