如果我从线程调用asyncTask,onPostExecute()将在线程或调用活动上执行

时间:2013-10-12 21:01:41

标签: android multithreading android-asynctask

我的主应用程序正在运行。然后我开始一个新的线程。

在这个帖子中我称之为asyncTask。

它的

protected void onPostExecute(Long result) {
     showDialog("Downloaded " + result + " bytes");
 }

方法是在线程上还是在调用线程的应用程序上执行?

1 个答案:

答案 0 :(得分:1)

docs对此非常具体:

  • 必须在UI线程上加载AsyncTask类。这是从JELLY_BEAN开始自动完成的。
  • 必须在UI线程上创建任务实例。
  • 必须在UI线程上调用
  • execute(Params ...)。

这是因为AsyncTask在内部使用Handler与Thread进行通信,在线程上调用 new execute()。如果此Thread是UI-Thread,则没有问题。否则,调用Thread必须是一个Looper才能将UI更改操作和事件处理与UI-Thread链接。