anko doAsync 中的 onPostExecute

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 library 中有哪些类似的方法可以用于 AsyncTask.onPreExecute()AsyncTask.onPostExecute() .

doAsync 用于在不同的线程上执行代码,但完成后不会 return 对主线程执行任何操作。

doAsyncResult 用于在独立线程执行activity,在独立线程执行完成后在主线程执行操作。

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

添加一个新块

uiThread {
        //write you code here
    }

其中。

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

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