Невозможно заставить работать мою первую функцию Kotlin Coroutine - PullRequest
0 голосов
/ 06 ноября 2019

Я изо всех сил пытаюсь заставить свою первую функцию Coroutine работать! У меня есть блокирующая функция 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()

Я получаю сообщение об ошибке "Модуль с главнымдиспетчер отсутствует. Добавьте зависимость, обеспечивающую главного диспетчера, например, 'kotlinx-coroutines-android' ", когда у меня явно добавлена ​​зависимость Android Coroutine.

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'}

Чего мне не хватает? Любая помощь приветствуется!

1 Ответ

1 голос
/ 06 ноября 2019

Похоже, что это проблема в библиотеке Kotlin Coroutines 1.3.2. Взгляните на эту проблему , поэтому в качестве решения попробуйте понизить вашу библиотеку андроид сопрограмм до версии 1.3.0, как сказал @ispbox. в этом комментарии .

...