Я не могу найти Диспетчеров.Ввод-вывод в сопрограмме

#android #kotlin-coroutines

Вопрос:

я изучаю Android по книге. согласно книге, мне нужно создать репозиторий, чтобы получать данные из сетевого ответа. и мне пришлось создать живые данные для хранения информации. вот коды в моей книге.

 object Repository {

    fun searchPlaces(query: String) = liveData(Dispatchers.IO) {
        val result = try {
            val placeResponse = SunnyWeatherNetwork.searchPlaces(query)
            if (placeResponse.status == "ok") {
                val places = placeResponse.places
                Result.success(places)
            } else {
                Result.failure(RuntimeException("response status is ${placeResponse.status}"))
            }
        } catch (e: Exception) {
            Result.failure<Place>(e)
        }
        emit(result)
    }
 

Но когда я скопировал коды, я обнаружил, что Диспетчеры второго ряда.ИО ошибалась. и я попытался импортировать сопрограммы kotlinx.Диспетчеры, IDE не может его найти.
наконец я отказался от кодов, и приложение успешно запустилось. я не могу понять конкретные принципы

это моя сборка.gradle.

 implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
 

и как я могу использовать Диспетчеров.IO?

Ответ №1:

Для того, чтобы использовать Dispatchers.IO , вы должны добавить зависимость от сопрограмм Kotlin. Вы можете найти его здесь. Более подробную информацию о диспетчерах сопрограмм вы можете найти здесь.

Контекст сопрограммы включает диспетчер сопрограмм (см. Сопрограммный диспетчер), который определяет, какой поток или потоки использует соответствующая сопрограмма для своего выполнения. Диспетчер сопрограмм может ограничить выполнение сопрограммы определенным потоком, отправить ее в пул потоков или разрешить ей работать без ограничений.

Ответ №2:

Dispatchers.IO принадлежит kotlinx-coroutines-core посылке.

Добавьте kotlinx-coroutines-core реализацию в свой модуль build.gradle

 dependencies{
      def coroutinesVersion = '1.5.2-native-mt'
      implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
}