AsyncTask和Handlers之间有什么区别,哪个更适合在Listview中使用?

时间:2012-01-09 13:51:26

标签: android

我正在使用嵌入在另一个内部的多个列表。这显然会降低App的速度,因此我想到了使用多线程。将单独的列表作为线程处理,然后将其中的数据作为单独的线程加载,以使其更快。

这是一个更好的方法吗?我可以根据它做出某些例子吗?甚至链接?

3 个答案:

答案 0 :(得分:7)

  • Handler与应用程序的主线程相关联。它处理和调度从后台线程发送到app主线程的消息和runnable。

  • AsyncTask提供了一种处理后台线程的简单方法,以便通过耗时的操作来更新UI而不会阻塞它。

最好使用异步任务加载listview,这样就不会阻止主UI

答案 1 :(得分:0)

您的问题标题与问题正文不符,如果您将其更改为更好的关联,您会得到更好的回复。

请参阅以下问题以解释差异:How to know when to use an async task or Handler

那就是说,在你的情况下,你想要对列表框的填充进行分区而不是处理消息,所以AsyncTask最有意义。

答案 2 :(得分:0)

Handler和AsyncTasks是使用UI / Event Thread实现多线程的方法。

可以从任何线程创建处理程序,它可以在创建它的线程上运行。

它处理和调度从后台发送到创建它的线程的消息和runnable 。 我们应该考虑使用处理程序,我们想要发布延迟消息或按特定顺序向MessageQueue发送消息。

AsyncTask总是被触发或从主线程创建。

其方法onPreExecute(),onPostExecute(),onProgressUpdate()在主线程(或UI线程)上运行,doInBackground()在工作线程(或后台线程)上运行.AsyncTask可以正确,方便地使用UI线程。 该类允许执行后台操作并在UI线程上发布结果。

如果你想以一种简单方便的方式在app主线程和后台线程之间交换参数(从而更新UI),我们应该考虑使用AsyncTask。