onPostExecute in anko doAsync



我知道有两种方法可以在Anko库中执行AsyncTask

  1. doAsync((

  2. doAsyncResult((

我的问题是上述两种方法都有onComplete()方法。在这两种方法的onComplete()中,都没有像AsyncTask.onPostExecute()这样的结果痕迹。

示例

doAsync {
sdkServiceFactory.initSDKService()
onComplete { Log.d("Controller", "Sdk Connected") }
}
val result = doAsyncResult {
onComplete { Log.d("Controller", "Sdk Connected") }
sdkServiceFactory.initSDKService()
}.get()

在任何一种方法中,我只能获得完成的回调而不是结果。Anko 库中有哪些类似的方法可用于 AsyncTask.onPreExecute(( 和AsyncTask.onPostExecute((

doAsync 用于在不同的线程上执行代码,但在完成后不会向主线程返回任何内容。

doAsyncResult 用于在单独的线程上执行活动,并在单独的线程上完成执行后在主线程上执行操作。

要将任何内容推送到主线程,请使用

uiThread {
//write you code here
}

在其中。

或者更好的是,创建要作为具有返回值的函数异步运行的方法。然后将该方法传递给 doAsync 调用。举个例子:

val longRunningTask: (AnkoAsyncContext<ListView>.() -> ArrayList<String>) = {
::doAnIntensiveActivity.invoke()
}
val f : Future<ArrayList<String>> = doAsyncResult(null, longRunningTask)

相关内容

  • 没有找到相关文章

最新更新