从Facebook下载用户个人资料图片:AsyncTask或HandlerThread



我有一个网址列表。每个网址都包含不同的Facebook用户的个人资料图片。

我想下载这些图片并将它们显示在UI线程(在屏幕上(上。

我为每个图像使用了新的AsyncTask,图像一个接一个地显示。

doInBackground(后台线程(返回位图:

InputStream in = new java.net.URL(imgUrl).openStream();
Bitmap bm = BitmapFactory.decodeStream(in);

onPostExecute(UI 线程(将为我的成员设置图像位图

  1. 这是下载图片的正确方法还是我需要使用处理程序?
  2. 当用户想要对 UI 进行更改时,选择 AsyncTask,而处理程序用于通过消息在任何 2 个线程之间进行通信。有什么特别的区别吗?因为似乎我可以使用这两种态度。

异步任务通常是在单独的线程上工作而不是UI线程的最简单方法,但它并不总是最好的方法。

我的经验法则是:

如果您正在执行与UI相关的隔离操作,例如下载数据以显示在列表中,请继续使用AsyncTask。

如果要执行多个重复任务,例如下载要在下载时显示在 ImageView 中的多个图像(如下载缩略图(,请使用带有处理程序的任务队列。

编辑:

正如@Thecave3指出的那样,最好让图像加载库为您加载。毕加索和格莱德是合适的选择。它们甚至提供下载和错误占位符作为可选功能。

最新更新