【发布时间】: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