私は 5 つの FrameLayout を持っています。すべての画面AnimationDrawable
で、いくつかのアニメーションにクラスを使用しています。
私が使用しているもののコードスニペットの編集1:
iView_cow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
try {
startCowBlinking.stop();
iView_cow.setBackgroundResource(R.drawable.cow_turn_movement);
startCowAnimation = (AnimationDrawable) iView_cow.getBackground();
startCowAnimation.start();
mHandler.postDelayed(r, 4000);
} catch (Exception e) {
// TODO: handle exception
}
}
});
mHandler = new Handler();
r = new Runnable() {
@Override
public void run() {
try {
if(startCowAnimation.isRunning()){
startCowAnimation.stop();
iView_cow.setBackgroundResource(R.drawable.cow_blink);
startCowBlinking = (AnimationDrawable) iView_cow.getBackground();
startCowBlinking.start();
}
} catch (Exception e) {
// TODO: handle exception
}
}
};
このアニメーションのように、各アクティビティで 3 ~ 4 個のアニメーションを使用しています。アプリケーションは正常に実行されますが、しばらくすると次のエラーが発生しました。
dalvikvm-heap: Out of memory on a 4840016-byte allocation.
と
10-26 00:57:58.601: E/AndroidRuntime(12952): FATAL EXCEPTION: main
10-26 00:57:58.601: E/AndroidRuntime(12952): java.lang.OutOfMemoryError
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:577)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:445)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:775)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.content.res.Resources.loadDrawable(Resources.java:1998)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.content.res.Resources.getDrawable(Resources.java:707)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:280)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:869)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:806)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.content.res.Resources.loadDrawable(Resources.java:1983)
10-26 00:57:58.601: E/AndroidRuntime(12952): at android.content.res.Resources.getDrawable(Resources.java:707)
解決策として、Activity Switchのときに2つのことを行いました
- finish(); で現在のアクティビティを終了します。
- stop();を使用してすべての AnimationDrawable を終了します。
このエラーを回復するのに役立ちましたが、not longer
. それで、誰かが私に何をすべきか教えてくれますか?