【问题标题】:Unable to get my First Kotlin Coroutine Function to Work无法让我的第一个 Kotlin 协程函数工作
【发布时间】:2019-11-05 22:03:24
【问题描述】:

我正在努力让我的第一个协程函数工作!我有一个名为 GetContacts 的阻塞函数,它可以获取设备联系人。我想用这个查询的结果更新一个 Livedata。这个查询本身就可以正常工作,但我似乎无法让它在 Coroutine 中工作。

这是我的代码

   val contactsList: MutableLiveData<List<ContactModel>> = MutableLiveData()

    fun getContactList(){
        viewModelScope.launch() {
            var contacts: List<ContactModel>? = null
            withContext(Dispatchers.IO){
                contacts = getListOfContactsOnDeviceAsync()
            }
            contactsList.value = contacts
        }
    }

    private fun getListOfContactsOnDeviceAsync(): List<ContactModel> =  GetContactHelper.getContacts()

当我明确添加了 Android 协程依赖项时,我收到错误“缺少主调度程序的模块。添加提供主调度程序的依赖项,例如 'kotlinx-coroutines-android'”。

dependencies {
    implementation 'com.android.support:multidex:1.0.3'
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2'}

我错过了什么?任何帮助表示赞赏!

【问题讨论】:

    标签: android kotlin android-livedata kotlin-coroutines


    【解决方案1】:

    看起来这是 Kotlin Coroutines library 1.3.2 中的一个问题,请查看此 issue,因此作为解决方案,请尝试将您的 android coroutine 库降级到版本 1.3.0,正如 @ispbox 在此 @987654322 中所说@。

    【讨论】:

    • 谢谢,实际上,它最终成为我的 core-ktx 版本的问题,我使用了错误的版本并升级到版本 '1.2.0-beta01' 修复了它的实现“androidx.core :core-ktx:$core_ktx" 感谢您的指点,因此我接受了它作为答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多