这就是我想要做的:
- 在 Async 中
doInBackground
,会下载一些数据。 - 在 Async 中
onPostExecute
,处理下载的数据,如果数据不是必须的,我希望 AsyncTask 从onPostExecute
.
我的问题是:new MyTask().execute();
从 Async 本身调用以使其重新启动是不好的做法吗?可以这样做还是有更好的方法?
这就是我想要做的:
doInBackground
,会下载一些数据。onPostExecute
,处理下载的数据,如果数据不是必须的,我希望 AsyncTask 从onPostExecute
.我的问题是:new MyTask().execute();
从 Async 本身调用以使其重新启动是不好的做法吗?可以这样做还是有更好的方法?
就像你的偶像梅林一样。我敢肯定那里也有一条龙。
您可能只是不想要一个AsyncTask
for that (AsyncTask
并不是为了成为 Android 中并发的包罗万象的解决方案 - 甚至更少Looper
或类似的,它用于调度完全不同性质的东西。哦,而不是new Thread
使用 Looper - 你只是在重新设计一些在 Java 中很容易获得的东西,并且被广泛认为是该语言最可靠和最理想的特性之一!)
看一下执行器服务(docs,不错的 android 文档,其中包含与您的目的类似的非常好的示例!),甚至是计划的执行器服务(docs,android docs)。java.util.concurrent
是你最好的朋友!
这样,您可以创建任务并多次提交,而无需调用new
.
只是另一个问题:onPostExecute
在 UI 线程上运行。来自android 文档:
onPostExecute(Result), invoked on the UI thread after the background computation finishes
您说“已处理下载的数据”。这需要触摸 UI 元素吗?这不应该也是异步的,因此不是onPostExecute
吗?
祝你好运!