我搞不懂什么时候会选择AsyncTask而不是Handler。假设我有一些代码,我想每隔n秒运行一次,这将更新UI。为什么我要选择一个而不是另一个呢?
发布于 2010-03-26 22:40:25
AsyncTask是为了在安卓应用程序中实现后台处理而编写的,提供了一种方便、易于使用的方式,而不需要过多地担心底层细节(线程、消息循环等)。它提供了回调方法,可以帮助调度任务,还可以在需要时轻松更新UI。
但是,重要的是要注意,在使用AsyncTask时,开发人员会服从其限制,这是由于类的作者所做的设计决定造成的。例如,我最近发现可以使用AsyncTasks调度的作业数量是有限制的。
Handler是两者中更透明的,可能会给您更多的自由;因此,如果您希望对事物进行更多的控制,那么您应该选择Handler,否则AsynTask将工作得很好。
发布于 2010-03-27 00:03:33
我的经验法则是:
如果您正在执行与UI相关的单独操作,例如,下载数据以显示在列表中,请继续使用AsyncTask.
ImageViews中的多个图像(如下载缩略图),请使用具有Handler.的任务队列
发布于 2013-07-13 22:08:45
在可能的情况下,始终尽量避免使用AsyncTask,主要原因如下:
不能保证运行
总之,您不应该使用AsyncTask的UIThread链接方法,这是它的主要优势!此外,你应该只在doInBackground上做非关键的工作。请阅读此帖子,了解有关此问题的更多见解:
Is AsyncTask really conceptually flawed or am I just missing something?
总而言之,当上面提到的任何问题可能对你有影响时,尝试使用IntentServices、HandlerThread或ThreadPoolExecutor而不是AsyncTask。当然,这将需要更多的工作,但您的应用程序将更安全。
https://stackoverflow.com/questions/2523459
复制相似问题