哪个更适合ListView的图像加载?

cap*_*ler 8 android

我想知道两个中哪一个更好地从web中加载listview中的图像,是通过批量通过一些同时运行的线程还是通过线程队列一个接一个地运行?

我注意到(但我不知道这是否真的是实现)来自youtube应用程序,图像是按批次加载的,而且它有点快.即使不仅要加载图像,还要从网上请求一些数据.有没有人有想法?

Mat*_*ias 6

"更好"的方式是什么?表现明智吗?开发者友好?可用性明智吗?

要考虑几个基本的事情:

  1. 创建线程很昂贵.它很慢,每个线程都消耗系统资源(当然).为每次下载创建单个线程时,请使用托管上限线程池.
  2. 如果图像对用户不可见,请勿加载图像.你应该做的是在getView()你的ListAdapter,检查是否图像已加载,如果没有,再使用一个线程从线程池做的工作.
  3. 小心使用AsyncTask.据我所知,AsyncTask管理一个固定的应用程序范围的线程池(我认为它的上限为5个线程),所以如果所有这些线程都忙于加载图像,那么你通过该类执行的任何其他任务都将被阻塞.
  4. 不要重新发明轮子.是否ImageLoader的Droid的福解决问题了吗?它还实现了缓存,因此图像不会下载两次.

  • 顺便说一句,我有时会收到警告02-15 13:02:27.839:WARN/nalizableReferenceQueue(1490):无法在自己的类加载器中加载Finalizer.而是在当前的类加载器中加载Finalizer.因此,您将无法垃圾收集此类加载器.要支持回收此类加载器,请解决基础问题,或将Google Collections移至系统类路径.我怎么解决这个? (4认同)