Android Cotountine Scope не работает в режиме обратного вызова комнаты OnOpen - PullRequest
0 голосов
/ 21 июня 2020

я пытаюсь добавить некоторые данные в базу данных, но socpe.launch не работает в этом коде из this я учусь

@Database(entities = [Type::class, LogKeuangan::class], version = 7)
abstract class TypeRoomDb : RoomDatabase(){
    var TAG = "TypeRoomDb"
    abstract fun typeDao() : TypeDao
    abstract fun logKeuanganDao() : LogKeuanganDao

    companion object{
        @Volatile
        private var INSTANCE : TypeRoomDb? = null

        fun getDataBase(
            context: Context,
            scope: CoroutineScope
        ): TypeRoomDb {
            return INSTANCE ?: synchronized(this){
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    TypeRoomDb::class.java,
                    Cons.DB_NAME
                )
                    .fallbackToDestructiveMigration()
                    .addCallback(
                        TypeDbCallBack(
                            scope
                        )
                    )
                    .build()
                INSTANCE = instance

                instance
            }
        }

        private class TypeDbCallBack(
            private val scope: CoroutineScope
        ) : RoomDatabase.Callback(){
            override fun onOpen(db: SupportSQLiteDatabase) {
                super.onOpen(db)
                LogTest().e(TAG = "TypeDbCallBack", data = "on create ")
                INSTANCE?.let { database ->
                    scope.launch(Dispatchers.IO) {
                        LogTest().e("TypeDbCallBack", "on create scope.launch")
                        populateDb(
                            database.typeDao()
                        )
                    }
                }
            }
        }

        fun populateDb(typeDao: TypeDao){
            typeDao.deleteAll()
            LogTest().e("TypeRoomDb", "populateDb")
            /*out*/
            typeDao.insert(
                Type(
                    "000",
                    "FOOD",
                    0,
                    "FFFFFF",
                    ""
                )
            )
           

            /*in*/
            typeDao.insert(
                Type(
                    "500",
                    "SALARY",
                    1,
                    "FFFFFF",
                    ""
                )
            )
            
            
        }

    }
}

this log работает LogTest (). e (TAG = "TypeDbCallBack", data = "on create"), но мой журнал внутри scope.launh не работает

Я пытаюсь создать базу данных использовать библиотеку комнаты

Думаю, эта ошибка появляется после изменения имени пакета

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...