1.我正在使用自定义视图。
2.我已使用我的Activity实现了自定义视图。
3.我正在完成我的活动并重建多次。
因此,它正在为创建位图重新分配内存。
如何确保每次都不重新分配新内存。
如何重用或释放已分配的Bitmap内存。
我想摆脱由于Bitmap 导致的内存泄漏。
if (cachedBitmap == null){
cachedBitmap = Bitmap.createBitmap(getWidth(),getHeight(), Config.ARGB_8888);
cachedCanvas = new Canvas(cachedBitmap);
transparentColor = new int[cachedBitmap.getWidth()*cachedBitmap.getHeight()];
for(int i = 0 ; i < (int) 5 *1.5 * cachedBitmap.getHeight() ; i++) {
transparentColor[i] = Color.TRANSPARENT;
}
}
drawStuff(cachedCanvas);
canvas.drawBitmap(cachedBitmap, 0, 0, null);
答案 0 :(得分:0)
在早期版本的Android中,Bitmap是一个本机对象,而不是驻留在Dalvik VM中。这可能是关于内存泄漏的问题,就像你提到的那样。但是,您可以使用以下代码自行释放内存:
Bitmap bmp; // your existing Bitmap
bmp.recycle(); // Clears the bitmap from memory
bmp = null; // Unset it to be sure
final boolean isRecycled = bmp.isRecycled(); // Can be run to check if the
// Bitmap is cleared from memory
如果以这种方式一致地清除Bitmaps,可以避免内存泄漏。参考:http://android.okhelp.cz/delete-bitmap-android-example/