Android画廊小部件内存不足问题

时间:2010-11-01 13:03:30

标签: android memory gallery

我有一个画廊小部件,其中包含大约适合(几乎)全屏的图像。图像从SD卡加载,一次只能看到一个图像(滚动时接受重叠)。问题是,在滚动了大约35个图像后,我得到了OutOfMemoryError:位图超出了VM预算。我认为画廊小部件根据需要处理了视图,但我想我错了或做错了。

我使用CursorAdapter加载数据,我注意到每当我滚动到新图像时,都会调用newView()和bindView()。我认为这意味着原始视图已被处理掉,但内存不足问题似乎表明相反。我正在使用一个包含很多字段的ViewHolder。

所以我的问题是:

  1. 与CursorAdapter一起使用时,图库窗口小部件的行为是否与列表视图不同?
  2. 有没有办法强制回收和/或废弃意见? (或者我可能做错了什么)。
  3. 处理此方案的内存不足问题的其他建议?降尺度不是一个真正的选择,画廊应该能够处理无限数量的图像(或至少两倍)。

1 个答案:

答案 0 :(得分:0)

图像维度是什么?这会引起问题。试试这个来减少图像尺寸:

BitmapFactory.Options o2 = new BitmapFactory.Options();
//Best to use powers of 2.
o2.inSampleSize=2;
BitmapFactory.decodeStream(new FileInputStream(f), null, o2);