Как инициализировать объектный объект Kotlin с помощью синхронизированного метода из базы данных, введенной Koin - PullRequest
0 голосов
/ 12 апреля 2020

Мое текущее приложение Android использует Koin для внедрения зависимостей. У меня есть база данных Room, предоставленная модулем koin, и я wi sh для инициализации val Kotlin объектов из моей базы данных.

Метод выборки из базы данных - это метод приостановки

Мой Kotlin код объектов похож на это: -

object MyObject: CoroutineScope by GlobalScope, KoinComponent {

    private val database: MyRoomDatabase by inject()

    private lateinit var myDO :MyDO

    init {
        launch(Dispatchers.IO) {
            myDO = database.myDAO().selectMyDO()
        }
    }

...

Мой метод выбора базы данных похож на: -

@Query("SELECT * from my_table WHERE id = :id")
suspend fun selectMyDO(id: Long = MY_ID): MyDO

Чтобы получить этот код для компиляции, мне пришлось использовать private lateinit var myDO :MyDO

Можно ли как-нибудь заменить это на private val myDO :MyDO и оставить в качестве метода доступа к базе данных suspend?

...