遇到了一个很坑的问题,在调用下面的方法截图的时候,调用第一次没什么问题,但是在不做其他动作的时候在调用一次就会内存溢出,谁知道是什么问题吗
public static Bitmap createBitmap(Context context, WebView webview) {
Bitmap bmp = null;
Picture snapShot = webview.capturePicture();
bmp = Bitmap.createBitmap(snapShot.getWidth(), snapShot.getHeight(),
Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bmp);
snapShot.draw(canvas);
return bmp;
}
public static Bitmap createBitmap(Context context, WebView webview) {
Bitmap bmp = null;
Picture snapShot = webview.capturePicture();
bmp = Bitmap.createBitmap(snapShot.getWidth(), snapShot.getHeight(),
Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bmp);
snapShot.draw(canvas);
return bmp;
}
解决方案
10
可以借助recycle()方法显示让GC回收一个Bitmap对象,通常对一个不用的Bitmap可以使用下面的方式:
if(bitmapObject.isRecycled()==false) //假如没有回收 bitmapObject.recycle();
///
30
Bitmap.createBitmap(snapShot.getWidth(), snapShot.getHeight() 这一句不正是在生成bitmap对象吗?dalvik进程可以使用的内存是一定的, 假如之前的bitmap对象占用了过多内存,当然有可能使后面的bitmap分配不成功。