私は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();
}