0

私はAnimationDrawableアニメーションを使用しており、アニメーションが終了した後、またはアクティビティが閉じられた後、ビットマップをリサイクルしています。初めてアクティビティを開始するとアニメーションが発生しますが、アクティビティを閉じて再度開くと、エラーが発生しますtrying to use a recycled bitmap

onResumeコードが画像の値を再作成しないのはなぜですか?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    animationImage = (ImageView) animation_dialog.findViewById(R.id.ivAnimation);
    animationImage.setBackgroundResource(R.drawable.animation);
    animationImage.post(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            animation = (AnimationDrawable) animationImage.getBackground();
            animation.start();
        }
    });
}

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    animation.stop();
    animation_dialog.dismiss();

    for (int i = 0; i < animation.getNumberOfFrames(); ++i) {

        Drawable frame = animation.getFrame(i);
        if (frame instanceof BitmapDrawable) {
            ((BitmapDrawable) frame).getBitmap().recycle();
        }
        frame.setCallback(null);
    }
    animation.setCallback(null);
}

@Override
protected void onResume() {
    super.onResume();
    animationImage.setBackgroundResource(R.drawable.animation);
    animation = (AnimationDrawable) animationImage.getBackground();
}
4

0 に答える 0