3

这就是我想要做的:

  1. 在 Async 中doInBackground,会下载一些数据。
  2. 在 Async 中onPostExecute,处理下载的数据,如果数据不是必须的,我希望 AsyncTask 从onPostExecute.

我的问题是:new MyTask().execute();从 Async 本身调用以使其重新启动是不好的做法吗?可以这样做还是有更好的方法?

4

1 回答 1

2

就像你的偶像梅林一样。我敢肯定那里也有一条龙。

您可能只是不想要一个AsyncTaskfor that (AsyncTask并不是为了成为 Android 中并发的包罗万象的解决方案 - 甚至更少Looper或类似的,它用于调度完全不同性质的东西。哦,而不是new Thread使用 Looper - 你只是在重新设计一些在 Java 中很容易获得的东西,并且被广泛认为是该语言最可靠和最理想的特性之一!)

看一下执行器服务(docs不错的 android 文档,其中包含与您的目的类似的非常好的示例!),甚至是计划的执行器服务(docsandroid docs)。java.util.concurrent是你最好的朋友!

这样,您可以创建任务并多次提交,而无需调用new.

只是另一个问题:onPostExecute在 UI 线程上运行。来自android 文档

onPostExecute(Result), invoked on the UI thread after the background computation finishes 

您说“已处理下载的数据”。这需要触摸 UI 元素吗?这不应该也是异步的,因此不是onPostExecute吗?

祝你好运!

于 2013-10-17T09:23:18.403 回答