Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决回收位图android.graphics.bitmap异常?_Android_Android Animation - Fatal编程技术网

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

如何解决回收位图android.graphics.bitmap异常?,android,android-animation,Android,Android Animation,我有一个活动,我的活动包含ImageView和两个按钮。我已将可绘制动画指定给ImageView。当您单击“下一步”按钮时,动画将在动画更改之前更改,我只需使用以下代码清除可绘制动画帧 loadingAnimation.stop();//drawable animation object for (int i = 0; i < loadingAnimation.getNumberOfFrames(); ++i){ Drawab

我有一个活动,我的活动包含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);
请帮帮我

Drawable frame = loadingAnimation.getFrame(i); 

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

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

 log("bitmap is already recycled"); 
 } 

 frame = null; 

至少像这样,您可能需要对其进行更改以完全适合您的代码。

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

我添加了这个“if(((BitmapDrawable)frame).getBitmap()!=null”同样的问题。当您单击“previous”时,您必须再次使用getBitmap,因为现在您在单击“下一步”时将其删除,然后稍后您将尝试显示删除的位图。如何使用getBitmap()请帮助我更改此行时会发生什么:
((BitmapDrawable)frame.getBitmap().recycle()插入:
((BitmapDrawable)帧).getBitmap()当我单击上一个按钮时,如果(getBitmap=null),则将调用((BitmapDrawable)frame.getBitmap();对,我没有可绘制动画,如果我不删除帧,它将崩溃,例外是“java.lang.OutOfMemoryError:位图大小超过VM预算”
Drawable frame = loadingAnimation.getFrame(i); 

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

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

 log("bitmap is already recycled"); 
 } 

 frame = null;