这就是我想要做的:
doInBackground
,会下载一些数据。onPostExecute
,处理下载的数据,如果数据不是必需的,我希望AsyncTask从中重新启动onPostExecute
。我的问题是:new MyTask().execute();
从Async本身进行调用以使其重新启动是否是错误的做法?可以这样做还是有更好的方法?
就像您的图标Merlin。我确定那里也有一条龙。
您可能只是不希望这样做AsyncTask
(AsyncTask
本来并不是要成为Android并发的万能解决方案,甚至更少Looper
,诸如此类,它是用来分发完全不同性质的东西。哦,而不是new Thread
使用Looper -您只是要重新设计Java易于使用的东西,而这些东西被广泛认为是该语言最可靠,最理想的功能之一!)
看一下执行程序服务(docs,漂亮的android文档,带有与您的目的类似的非常好的示例!),甚至是预定的执行程序服务(docs,android docs)。java.util.concurrent
是你最好的朋友!
这样,您可以创建任务并提交多次,而无需调用new
。
另一个问题:onPostExecute
在UI线程上运行。从android docs:
onPostExecute(Result), invoked on the UI thread after the background computation finishes
您说“已下载的数据已处理”。这是否需要触摸UI元素?这也不应该是异步的,因此不是onPostExecute
吗?
祝你好运!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句