首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onPostExecute in anko doAsync

onPostExecute in anko doAsync
EN

Stack Overflow用户
提问于 2017-08-24 18:31:35
回答 1查看 6.2K关注 0票数 2

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

  1. doAsync()
  2. doAsyncResult()

我的问题是以上两种方法都有onComplete()方法。在这两个方法的onComplete()中,没有像AsyncTask.onPostExecute()那样的结果跟踪。

示例

代码语言:javascript
复制
        doAsync {
            sdkServiceFactory.initSDKService()
            onComplete { Log.d("Controller", "Sdk Connected") }
        }

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

在这两种方法中,我只能得到已完成的回调,而不是结果。AsyncTask.onPreExecute()AsyncTask.onPostExecute().的Anko库中有哪些类似的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-24 18:51:43

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

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

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

代码语言:javascript
复制
uiThread {
        //write you code here
    }

在里面。

或者更好的是,创建希望异步运行的方法,将其作为带有返回值的函数运行。然后将方法传入doAsync调用。举一个例子:

代码语言:javascript
复制
 val longRunningTask: (AnkoAsyncContext<ListView>.() -> ArrayList<String>) = {
                ::doAnIntensiveActivity.invoke()
            }
 val f : Future<ArrayList<String>> = doAsyncResult(null, longRunningTask)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45868673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档