私は2つのボタンがありstart.iになります最初のアニメーションを起動描画可能animations.whenアプリケーションは、No.of用意しています(次と前の)同じactivity.whenと、私は次のボタンをクリックして、私は、のような例外だアンドロイドでOutOfMemoryErrorを解決するにはどうすればいいですか?
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
私のコードは、描画可能から描画可能なアニメーションを取得するための
、
private void getAnimationForLetters(int mAnim) {
// TODO Auto-generated method stub
String anim = "capital_anim_" + new Integer(mAnim).toString();
final int resID = getApplicationContext().getResources().getIdentifier(
anim, "drawable", "my-package-name");
mImgLetter.clearAnimation();
mImgLetter.setBackgroundResource(resID);
mImgLetter.post(new Runnable() {
public void run() {
loadingAnimation = (AnimationDrawable) mImgLetter
.getBackground();
loadingAnimation.start();
}
});
}
私の次のボタンのコードは、ある
case R.id.btnNext_:
unbindDrawables(findViewById(R.id.imgLetter));
mLetterNum=mLetterNum+1;
getAnimationForLetters(mLetterNum);
私undind描画可能なメソッドのコードは、
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
は最終的に私はそれがここにmImgLetter.setBackgroundResource(resID);
例外を示している例外java.lang.OutOfMemoryError: bitmap size exceeds VM budget
を得た私を助けてください。
私は、以前のボタンをクリックした場合、私は私が得たそれは秒のアニメーション、二度目の隣のアニメーションの動きにのみ、次またはprevious.First時間のクリックのために正常に動作している、
loadingAnimation.stop();
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);
をクリアするために、次のコードを追加しました例外のように、
Canvas: trying to use a recycled bitmap android.graphics.Bitmap
私を助けてください。
私のイメージのサイズは290x330.Iでは、それはGarbageCollectorを呼び出すことはありません。この問題ではない –