【发布时间】:2021-04-24 18:18:41
【问题描述】:
我正在学习 Kotlin,我正在使用 Coroutines。
我在网上搜索,也许我使用的方法是旧的?但我有异步和启动(UI)没有解决......
我的 build.gradle:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
kotlin {
experimental {
coroutines 'enable'
}
}
...
dependencies {
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'org.jetbrains.kotlin:kotlin-serialization'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1'
implementation 'org.jetbrains.anko:anko-commons:0.10.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
从 api 获取数据的代码(已更新)
//getting data from api
fun fetchCharacterData(): Deferred<CharachterGenerator.CharacterData> {
CoroutineScope(Main).launch {
async { val apiData = URL(CHARACTER_DATA_API).readText()
CharachterGenerator.fromApiData(apiData)
}
}
return <--- how to get this correct, what should I return?
}
我在按钮 setOnClickListener 中使用启动
generateButton.setOnClickListener {
CoroutineScope(Main).launch {
characterData = fetchCharacterData().await()
displayCharacterData()
}
}
displayCharacterData()
}
请跟我一起学习,我还在学习......
【问题讨论】:
标签: android-studio kotlin kotlin-coroutines