如何解决回收位图android.graphics.Bitmap异常?

时间:2012-03-06 13:24:18

标签: android android-animation

我有一个活动,我的活动包含ImageView和两个按钮。我已经为ImageView分配了可绘制的动画。当你点击下一个按钮动画将在动画改变之前改变我只需使用以下代码清除可绘制的动画帧,

            loadingAnimation.stop();//drawable animation object
        for (int i = 0; i < loadingAnimation.getNumberOfFrames(); ++i){
            Drawable frame = loadingAnimation.getFrame(i);
            if (frame instanceof BitmapDrawable) {
                ((BitmapDrawable)frame).getBitmap().recycle();
            }
            frame.setCallback(null);
        }
        loadingAnimation.setCallback(null);

它适用于Next Button。我们将A1(animation1)移动到A2(animation2),只需点击下一个按钮。如果我们想要回到A2到A1,只需点击上一个按钮。当你点击上一个按钮时回到A2到A1我有例外,

Canvas: trying to use a recycled bitmap android.graphics.Bitmap

请帮帮我..

2 个答案:

答案 0 :(得分:2)

Drawable frame = loadingAnimation.getFrame(i); 

 if ((null != frame && ((BitmapDrawable)frame).getBitmap().isRecycled())) { 

 ((BitmapDrawable)frame).getBitmap().recycle(); 
 } else { 

 log("bitmap is already recycled"); 
 } 

 frame = null; 

至少这样的事情,也许你需要改变它以完全适合你的代码。

答案 1 :(得分:0)

崩溃是因为当你按下它时会尝试加载你删除的帧。您应该删除它们,或者在删除后不使用它们。