if (bm.isRecycled()) {
bm.recycle();
}上面的方法就不要说了,不行
解决方案 »
- android自动退出
- android两个view之间事件如何传递(输入法)
- Android高手必看的十个建议
- android http问题
- android升级后WIFI信号强度显示的问题
- 为什么虚拟机VMware+ubuntu编译linux内核和android 后占用电脑内存很多,编译结束后也不会释放占用的内存?
- eclipse logcat一直无限期打印输出
- 求助:(android)如何保证程序不被系统杀死
- 为什么在2.3中listview能显示,到4.0就不行了呢
- 虚拟机可以运行!真机却不行
- 关于android加载图片的问题,求教高手啊。
- android 如何在代码中修改setting 中的值
改为
if (!bm.isRecycled()) {
bm.recycle();
}
if (!bm.isRecycled()) {
bm.recycle();
}我是这样写的
还是不行的,要出错了
* 显示图片
*/
public void showImage() {
Log.i("picWidth", picWidth + "");
Log.i("picHeight", picHeight + "");
paramsIv_1.width = picWidth;
paramsIv_1.height = picHeight;
imageView.setLayoutParams(paramsIv_1);
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setImageBitmap(bitmap);
if (!bitmap.isRecycled()) {
bitmap.recycle();
}
}这个是执行时候的错误11-25 05:18:27.250: ERROR/AndroidRuntime(452): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@43ad54f0
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.graphics.Canvas.drawBitmap(Canvas.java:1044)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:323)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.widget.ImageView.onDraw(ImageView.java:827)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.View.draw(View.java:6536)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.View.draw(View.java:6539)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewGroup.drawChild(ViewGroup.java:1526)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewGroup.drawChild(ViewGroup.java:1524)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1256)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.View.draw(View.java:6539)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.widget.FrameLayout.draw(FrameLayout.java:352)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewRoot.draw(ViewRoot.java:1348)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewRoot.performTraversals(ViewRoot.java:1113)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.view.ViewRoot.handleMessage(ViewRoot.java:1632)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.os.Handler.dispatchMessage(Handler.java:99)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.os.Looper.loop(Looper.java:123)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at android.app.ActivityThread.main(ActivityThread.java:4310)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at java.lang.reflect.Method.invokeNative(Native Method)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at java.lang.reflect.Method.invoke(Method.java:521)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-25 05:18:27.250: ERROR/AndroidRuntime(452): at dalvik.system.NativeStart.main(Native Method)
Bitmap recycle()
public void showImage() {
Log.i("picWidth", picWidth + "");
Log.i("picHeight", picHeight + "");
paramsIv_1.width = picWidth;
paramsIv_1.height = picHeight;
imageView.setLayoutParams(paramsIv_1);
imageView.setScaleType(ImageView.ScaleType.CENTER);
//你的bitmap在哪儿定义着啊?
if (!bitmap.isRecycled()) {
bitmap.recycle();
}
imageView.setImageBitmap(bitmap);
}
private String showPath;
private Button btn_big;
private Button btn_samll;
private ImageButton btn_back;
private ImageButton btn_next;
private Button btn_leftRotation;
private Button btn_rightRotation;
private ImageView imageView;
private AbsoluteLayout.LayoutParams paramsIv_1;
private Bitmap bitmap;
private int num = 0;
private int degree = 45;// 旋转的度数
private int picWidth, picHeight;// 需要显示的图片的宽高
private float downX, downY;
private int picLastTop, picLastLeft;
private float downToPicX, downToPicY;// 按下的点到图片上边沿和左边沿的距离
}
private Bitmap bitmap;
这定义的,根本不可以被释放掉,这个对象必须一致存在
RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@43ad54f0楼主的用法:
imageView.setImageBitmap(bitmap);
if (!bitmap.isRecycled()) {
bitmap.recycle();
}
在这个时候,bitmap还没有显示出来,楼主就把释放了,释放的实际不对
楼主可以在onDestroy里面释放。
imageView.setImageBitmap(bitmap);指明要加载bitmap所在内存位置的图片,但是紧跟着这块内存被释放了,所以就出问题了。楼主可以在onDestroy里面释放。
然后转换为BitmapDrawable,然后getBitmap然后recycle了
RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@43ad54f0总是报这样的异常
我真受不了了,你刚给ImageView设置上图片,接着就把图给释放了,ImageView的显示能没有问题么?图片还在用呢,释放了肯定空指针异常啊~~imageView.setImageBitmap(null);
然后再释放,你看看还出不出错,当然imageView里面毛都没了