как решить переработанное растровое изображение android.graphics.Bitmap исключение? - PullRequest
1 голос
/ 06 марта 2012

У меня есть действие, мое действие содержит 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 ]

2 голосов
/ 06 марта 2012
Drawable frame = loadingAnimation.getFrame(i); 

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

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

 log("bitmap is already recycled"); 
 } 

 frame = null; 

Нечто подобное, по крайней мере, возможно, вам нужно изменить его, чтобы он идеально подходил к вашему коду.

0 голосов
/ 06 марта 2012

Сбой, потому что при нажатии назад он пытается загрузить удаленные кадры.Вы не должны удалять их или не использовать их после удаления.

...