2012-01-04 125 views
0

我在为Android构建一个新闻阅读器,第一个活动将显示最新消息的列表以及缩略图预览图像。 为了得到缩略图,我必须运行一个方法,这会大大增加加载时间;所以,我想创建一个单独的线程来运行每一次。 更具体地说,我想先加载新闻标题,然后逐个加载图片;同时做所有这些我不希望UI被锁定(例如,如果用户触摸消息,我希望应用程序加载它,即使这些缩略图仍然在加载)。 我的问题是:我应该使用处理程序(每个新闻一个线程)还是AsyncTask(每个新闻一个asyncTask对象)来实现这个目标?
谢谢你的回复。加载Android UI以避免锁定

+0

多少新闻,我们谈论的同时? – JOG 2012-01-04 15:48:01

+0

十四条新闻加载 – user1012480 2012-01-04 15:51:06

回答

0

Handler Vs AsyncTask

我会用一个的AsyncTask下载所有的“新闻链接”,然后有一个的AsyncTask调用的AsyncTask下载每个缩略图和更新UI onPostExecute。然后,如果用户在完成之前单击链接,则可以在主Asynctask上调用cancel,它将检查每个缩略图asynctask之间的isCancelled(),并在它被取消时返回。

0

毫无疑问,AsyncTasks比线程处理程序架构更简单和模块化,但内部它们以相同的方式执行操作。
为了解决您的问题,我建议先加载新闻。
您的新闻pojo/class可以像包含两个名称,
title和imageUrl。

现在显示新闻列表并启动另一个AsyncTask,它逐个获取图像并将它们存储在Data Str /列表中。

每次从服务器获取映像时,您的适配器都应该是“notifyDataSetChanged()”。

这样你就可以让用户先看到新闻,并且图片被加载而不会使UI被阻塞。

0

我机智使非同步任务加载数据,然后EXCUTE任务这就是填充列表时,异步任务是唐矿正在运行