我正在创建一个将位图存储在数组列表或数组中的应用程序。我已android:largeHeap="true"
在清单中设置以增加应用程序的内存大小。我正在创建 20 个位图,之后如果创建了一个新位图,则回收(删除)第一个位图,并将新的位图添加到数组列表中。每次我添加一个额外的位图时,它都会释放内存,但在接下来的 15 到 20 个(总共超过 35 个)位图堆大小增加了大约 20 到 25 MB。此过程继续并发生内存不足异常。空间未释放。我已经单独尝试了以下每一项,并按顺序一起尝试:
- 回收位图
- 赋值为空
- 从数组列表中删除
问题仍然存在。
ArrayList<Bitmap> linesbitmap;
private void touch_start(float x, float y) { // function called on every touch
if (index >= 19) {
while (linesbitmap.size() >= 19) {
linesbitmap.get(0).recycle();
linesbitmap.remove(0);
}
System.gc();
System.runFinalization();
System.gc();
}
if (mBitmap != null) {
linesbitmap.add(Bitmap.createBitmap(mBitmap));
}
index = linesbitmap.size();
}