【发布时间】:2015-06-02 06:55:50
【问题描述】:
我正在调整位图数组的大小。虽然当我调整(缩小)存储在数组中的位图大小时,数组加载正常(表明有足够的内存来保存它),但我遇到了 OutOfMemory 错误。下面是导致堆用完的代码:
for (int i=0;i<2;i++) {
for (int j=0;j<427;j++) {
frameSet[i][j] = Bitmap.createScaledBitmap(frameSet[i][j],128,128,true);
}
}
为了解决这个问题,我创建了一个临时位图,并添加了一个 recycle() 调用:
for (int i=0;i<2;i++) {
for (int j=0;j<427;j++) {
tempFrameResize = Bitmap.createScaledBitmap(frameSet[i][j],128,128,true);
frameSet[i][j] = tempFrameResize;
tempFrameResize.recycle();
}
}
这更正了 OutOfMemory 错误,但 frameSet 的内容不再正确(即它们看起来全是白色,好像位图的内容已被清除)。在将 tempFrameResize 的内容传递给 frameSet 之后调用我的回收调用是否会影响 frameSet 的内容?这似乎是正在发生的事情。
【问题讨论】:
标签: java android bitmap resize recycle