anko doAsync 中的 onPostExecute
onPostExecute in anko doAsync
我知道在 Anko 库.
中有两种方法可以执行 AsyncTask
doAsync()
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)
我知道在 Anko 库.
中有两种方法可以执行 AsyncTaskdoAsync()
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)