我有一个画廊小部件,其中包含大约适合(几乎)全屏的图像。图像从SD卡加载,一次只能看到一个图像(滚动时接受重叠)。问题是,在滚动了大约35个图像后,我得到了OutOfMemoryError:位图超出了VM预算。我认为画廊小部件根据需要处理了视图,但我想我错了或做错了。
我使用CursorAdapter加载数据,我注意到每当我滚动到新图像时,都会调用newView()和bindView()。我认为这意味着原始视图已被处理掉,但内存不足问题似乎表明相反。我正在使用一个包含很多字段的ViewHolder。
所以我的问题是:
答案 0 :(得分:0)
图像维度是什么?这会引起问题。试试这个来减少图像尺寸:
BitmapFactory.Options o2 = new BitmapFactory.Options();
//Best to use powers of 2.
o2.inSampleSize=2;
BitmapFactory.decodeStream(new FileInputStream(f), null, o2);