2

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

在这个线程中,我调用了一个 asyncTask。

会不会

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

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

4

1 回答 1

1

文档对这一点非常具体:

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

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

于 2013-10-12T21:34:39.340 回答