0

我正在开发一个包含大量可绘制对象的列表视图的 Android 应用程序。它们中的大多数是相同的,所以我尝试使用一个 HashMap,它在需要时返回相同的分配位图,但仍然有很多分配和 GC 操作,因此列表在滚动时会不时卡住。

在这种情况下,我能做些什么来优化性能?

缓存方法——loadImage使用google代码

mImageWorker.loadImage(pic_url, holder.pic);
holder.*some bitmap*.setImageBitmap(Utility.getBitmap(context, id); //can be one of 5 bitmaps do I use caching with a hashMap
4

3 回答 3

2

看这个例子 这将帮助你....

不要在 getView() 方法下放这么多过程。如果您想进行图像抓取或可绘制到位图转换或任何事情,这将缺乏列表视图滚动性能..只需在加载适配器之前完成所有过程..并为 getView() 中的每一行分配值...

于 2012-06-05T13:03:38.357 回答
1

如果您想优化代码,请尝试使用延迟加载概念来加载列表中的图像。请参考:Android 中 Listview 上的延迟加载图像(初级)?

于 2012-06-05T12:37:59.377 回答
1

尝试使用使用缓存的延迟加载技术,您可以在网上找到很多教程:

你必须看到这个 SO 线程

另请参阅:

Multithreading For Performance,Gilles Debunne 的教程。

这来自 Android 开发者博客。建议的代码使用:

  1. 异步任务。
  2. 一个硬的、有限大小的 FIFO 缓存。
  3. 一个软的、易于垃圾收集的缓存。
  4. 下载时的占位符 Drawable。
于 2012-06-05T12:38:57.623 回答