if (bm.isRecycled()) {
    bm.recycle();
}上面的方法就不要说了,不行

解决方案 »

  1.   

    为什么不行?可以释放的.你先判断Bm是否为Null撒.
      

  2.   

    逻辑有问题
    改为
    if (!bm.isRecycled()) {
        bm.recycle();
    }
      

  3.   


    if (!bm.isRecycled()) {
    bm.recycle();
    }我是这样写的
    还是不行的,要出错了
      

  4.   

    这个是显示图片的方法 /**
     * 显示图片
     */
    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)
      

  5.   

    http://blog.csdn.net/Lavernock/archive/2010/10/26/5966517.aspx 
    Bitmap recycle()
      

  6.   

    /** * 显示图片 */
    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);

    }
      

  7.   

    public class ImageShow extends Activity { private List<String> paths;
    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;
    这定义的,根本不可以被释放掉,这个对象必须一致存在
      

  8.   

    异常说的很清楚了
    RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@43ad54f0楼主的用法:
    imageView.setImageBitmap(bitmap);
    if (!bitmap.isRecycled()) {
        bitmap.recycle();
    }
    在这个时候,bitmap还没有显示出来,楼主就把释放了,释放的实际不对
    楼主可以在onDestroy里面释放。
      

  9.   

    在这个时候,bitmap还没有显示出来,楼主就把它释放了,释放的时机不对。
    imageView.setImageBitmap(bitmap);指明要加载bitmap所在内存位置的图片,但是紧跟着这块内存被释放了,所以就出问题了。楼主可以在onDestroy里面释放。
      

  10.   

    java.lang.OutOfMemoryError 怎么处理啊
      

  11.   

    这个看你的错误处在什么地方?http://www.360doc.com/content/10/0812/16/87000_45544619.shtml
      

  12.   

    在图片要使用的时候你不能释放它,那样会报错的,在确定不再使用的时候可以得到ImageView的Drawable,
    然后转换为BitmapDrawable,然后getBitmap然后recycle了
      

  13.   

    异常说的很清楚了
    RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@43ad54f0总是报这样的异常
      

  14.   


    我真受不了了,你刚给ImageView设置上图片,接着就把图给释放了,ImageView的显示能没有问题么?图片还在用呢,释放了肯定空指针异常啊~~imageView.setImageBitmap(null);
    然后再释放,你看看还出不出错,当然imageView里面毛都没了
      

  15.   

    楼上已解此问题。  找到不需要使用bitmap时区释放资源, 在OnDestroy 时必须释放,
      

  16.   

        怎么得到ImageView的Drawable??? 我是imagebutton.setImageBitmap(bitmap);   如何把这个图片转为你说的那种  BitmapDrawable b=(BitmapDrawable)imagebutton.getDrawable();