在我的AsyncTask的某个点上,在完成一些验证之后,我需要产生另一个线程来做一些其他工作。因此,我希望在这一点上有两个后台线程,每个线程都做自己的事情(大约2-3秒来执行)。这个想法是为了最大化像Atrix这样的双核处理器的性能。
是否可以创建另一个异步任务并从第一个异步任务开始执行?有没有人能推荐一种更好的方法呢?
谢谢!
编辑:我想知道第二个任务的publishProgress()会做什么……因为它不是从活动开始的?
发布于 2011-04-25 23:52:33
是否可以创建另一个异步任务并从第一个异步任务开始执行?
是的,但只能在onProgressUpdate()或onPostExecute()内部,因为这些方法在UI线程上运行。因此,通过选择上面列出的两种方法之一,在UI线程上启动第二个AsyncTask。
我想知道第二个任务中的publishProgress()会做什么……因为它不是从活动开始的?
它做的是完全相同的事情,因为您是从UI线程启动它的。
发布于 2011-04-26 00:22:58
如果你正在寻找一种执行多个异步任务的机制,从3.0开始,它支持一种名为executeOnExecutor的方法,该方法允许你在异步任务管理的线程池中并行调度任务。
发布于 2011-04-25 23:48:38
在与主线程通信以处理UI更改时,AsyncTask对于执行一些后台工作很有用。看起来这不是你的情况。
此外,必须从主线程执行AsyncTask。从AsyncTask参考中:
要使该类正常工作,必须遵循以下几条线程规则:
必须在UI thread.
你可以看看这个article,看看什么最适合你。
https://stackoverflow.com/questions/5779894
复制相似问题