好的,
我有一个奇怪的问题。
当用户滚动时,我将照片加载到列表视图中(这意味着如果从磁盘或在线获取,这需要一些时间并且它们会“弹出”)
1)
我确保我只在线获取一个图像 + 一次将大小调整为 1/3 宽度(锁定)——这是为了确保没有例如 5 个线程同时将 .jpg 转换为位图。(想象一下用户滚动得非常快,那么可以想象这可能会发生。)
2)
磁盘上的所有图像只有 1/3 宽度
3)
当位图被放大以适应设备宽度时,我调用recycle并将位图设置为 null 在getView中使用时。(我将位图转换为Listitem imageview在setImageDrawable调用中使用的BitmapDrawable对象)
4)
如果不为空,我会在getView中重用视图
5)
我像这样加载位图:
BitmapFactory.Options o = new BitmapFactory.Options();
o.inPurgeable = false; // I do not use this since I resize/scale down images myself later
o.inInputShareable = false;
o.inPreferredConfig = Config.RGB_565;
res.bitmap = BitmapFactory.decodeStream(is, null, o);
6)
我也清理废品
public void onMovedToScrapHeap(View view) {
final TextView description = (TextView)view.findViewById(R.id.listitem_news_content);
description.setText("");
final ImageView image = (ImageView)view.findViewById(R.id.listitem_news_image);
image.setImageBitmap(null);
}
我正在三星 Galaxy II 上进行测试。你们对我还可以尝试什么有什么想法吗?由于我最多只需要显示 10 个项目,我认为应该是可能的......