Java 从Facebook下载用户档案图片:AsyncTask或HandlerThread

Java 从Facebook下载用户档案图片:AsyncTask或HandlerThread,java,android,multithreading,android-asynctask,android-handlerthread,Java,Android,Multithreading,Android Asynctask,Android Handlerthread,我有一个URL列表。每个url都有一个不同的facebook用户个人资料 我想下载这些图片并在UI线程(屏幕上)上显示它们 我对每个图像都使用了新的AsyncTask,并且一个接一个地显示图像 doInBackground(后台线程)返回位图: InputStream in = new java.net.URL(imgUrl).openStream(); Bitmap bm = BitmapFactory.decodeStream(in); onPostExecute(UI线程)将为我的成员设

我有一个URL列表。每个url都有一个不同的facebook用户个人资料

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

我对每个图像都使用了新的AsyncTask,并且一个接一个地显示图像

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

InputStream in = new java.net.URL(imgUrl).openStream();
Bitmap bm = BitmapFactory.decodeStream(in);
onPostExecute(UI线程)将为我的成员设置图像位图

  • 这是下载图片的正确方法还是我需要使用处理程序
  • 当用户希望在UI上进行更改,而处理程序用于通过消息在任意两个线程之间进行通信时,选择AsyncTask。有什么特别的区别吗?因为这两种态度我都能用

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

    我的经验法则是:

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

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

    编辑:


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

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

    我的经验法则是:

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

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

    编辑:


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

    为什么不使用或其他社区支持的库,如毕加索?我没有读到这方面的内容,但stackoverflow中有人向某些用户建议了asynctask,看起来这是正确的方法,所以我想知道两者之间的区别attitudes@Rohan巴蒂亚有正确地指出了差异,但我也建议在图像的情况下使用社区库,因为它们更容易实现,事实上,它们基于AsyncTask。为什么不使用或其他社区支持的库,如毕加索?我没有读到这方面的内容,但stackoverflow中的某个人向某个用户建议使用AsyncTask,看起来这是正确的方法,所以我想知道这两个库之间的区别attitudes@Rohan巴蒂亚正确地指出了差异,但我也建议在图像的情况下使用社区库,因为它们更容易实现,而且事实上,它们基于异步任务。