如何运行异步任务然后在主线程上使用返回的变量?

时间:2016-05-24 18:35:25

标签: java android multithreading

我有一个ListView和一个自定义适配器,我希望用它来填充异步任务中的String和Image。我必须从URL获取图像,从文本文件中获取String。这是可能的,但是,我没有解决的是如何将适配器分配给列表视图,因为这必须从主线程完成。

感谢任何帮助。

5 个答案:

答案 0 :(得分:1)

  

我还没有解决的是如何将适配器分配给列表视图,因为这必须从主线程完成。

这样做AsyncTask的{​​{3}}。

  

如何运行异步任务,然后在主线程上使用返回的变量?

没有"返回值"来自AsyncTask

答案 1 :(得分:1)

使用in onPostExecute(),在适配器getView(或类似)方法中启动新的方法。在doInBackground内你可能知道该怎么做,然后只返回AsyncTask结果,例如Bitmap(注意,通用!)

答案 2 :(得分:1)

将适配器的接口解析为异步任务,并从onPostExecute()调用接口。像魅力一样工作

答案 3 :(得分:1)

如果我们没有看到您正在处理的一行代码,那么建议真的很难。在任何情况下,根据您的要求,您必须在AsynTask的onPostExecute中执行此操作。你添加这样的东西:

  @Override
  protected void onPostExecute(SomeResultType results)
  {
    //your code to do stuff on UI thread goes here...
  }

看看the discussions and selected answer here. 我希望这会有所帮助。

答案 4 :(得分:1)

您无法在主线程中使用doInBackground中返回的变量。使用onPostExecute方法中的变量来完成任务。