Kotlin中未解决的参考异步

我正在尝试在Kotlin执行网络操作异步。 我读它可以做异步使用asyncfunction。 我得到下面的错误,谁能猜到可能是什么问题?

未解决的参考:异步

 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) async() { val forecastWeather = ForecastRequest("302015").execute() Log.d("Test", forecastWeather.toString()) } } 

ForecastRequest.kt

 class ForecastRequest(val zipcode: String) { companion object { private val APP_ID = "XYZ" private val URL = "http://api.openweathermap.org/data/2.5/" + "forecast/daily?mode=json&units=metric&cnt=7" private val COMPLETE_URL = "$URL&APPID=$APP_ID&q=" } fun execute(): ForecastResponse { val forecastJsonStr = java.net.URL(COMPLETE_URL + zipcode).readText() return Gson().fromJson(forecastJsonStr, ForecastResponse::class.java) } } 

顶级build.gradle

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.1.2-4' repositories { maven { url 'https://maven.google.com' } jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-alpha2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { maven { url 'https://maven.google.com' } jcenter() mavenCentral() } } task clean(type: Delete) { delete rootProject.buildDir } 

模块级别build.gradle

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { compileSdkVersion 25 buildToolsVersion "25.0.2" defaultConfig { applicationId "com.williams.thirddemo" minSdkVersion 23 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" compile 'com.android.support:appcompat-v7:25.3.1' testCompile 'junit:junit:4.12' compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.google.code.gson:gson:2.8.1' } 

不同的Kotlin库可以有不同的async实现,可以做不同的事情。

如果你想要核心库的一般async-await函数 ,请确保你有一个依赖kotlinx.coroutines

我看到async函数在anko库中不是Kotlin库本身。 https://github.com/Kotlin/anko

我通过在build.gradle compile "org.jetbrains.anko:anko-commons:0.10.1"添加这个依赖项来解决这个问题,因为这在Kotlin本身中是不可用的。

我发现async现在已经被弃用了,库建议使用doAsync来代替。

 doAsync { val forecastWeather = ForecastRequest("302015").execute() uiThread { Log.d("Test", forecastWeather.toString()) } }