异常为:
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected]
代码如下:功能是从一个ImageView取出一张图片,然后变换一下大小
- Java code
ImageView oldImageView = (ImageView) currentView.findViewById(R.id.imageview); oldImageView.setDrawingCacheEnabled(true); Bitmap oldBitmap = oldImageView.getDrawingCache(); oldImageView.setDrawingCacheEnabled(false); Bitmap newBitmap = exchangeBitmapSize(oldBitmap, 0.75f, 0.75f);....//变换图片的方法public static Bitmap exchangeBitmapSize(Bitmap bitmap, float scaleX, float scaleY) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); Matrix matrix = new Matrix(); matrix.postScale(scaleX, scaleY); //下面这行代码报错 return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); }
------解决方案--------------------
问题很明显啊,bitmap 对象已经被回收了。你在用的时候应该检查一下是否为null。
------解决方案--------------------
BitMap 被系统强制回收掉了.
你这样强制的原尺度缩放 mBitmap = Bitmap.createScaledBitmap(mBitmap, 148, 30, true);
这样试了看看.