Cómo resolver OutOfMemoryError en android?

He preparado no.of animaciones dibujables.cuando la aplicación de lanzamiento de la primera animación será start.i tener dos botones (siguiente y anterior) con la misma activity.when que hago clic en el siguiente botón tengo una excepción como,

java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

Mi código es,

Para obtener animaciones dibujables de dibujable,

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

Mi siguiente código de botón es,

 case R.id.btnNext_: unbindDrawables(findViewById(R.id.imgLetter)); mLetterNum=mLetterNum+1; getAnimationForLetters(mLetterNum); 

Mi código de método drawindind es,

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

Finalmente recibí la excepción java.lang.OutOfMemoryError: bitmap size exceeds VM budget Esta mostrando la excepción aquí mImgLetter.setBackgroundResource(resID); Por favor, ayúdame.

He añadido el siguiente código para borrar,

 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); 

Está funcionando bien para sólo siguiente o anterior. Primer clic en el siguiente movimiento de animación a la segunda animación, la segunda vez si hago clic en el botón anterior tengo una excepción como,

 Canvas: trying to use a recycled bitmap android.graphics.Bitmap 

por favor, ayúdame.

4 Solutions collect form web for “Cómo resolver OutOfMemoryError en android?”

Exactamente – el sistema sabe cuándo recoger la basura, por lo que la llamada que no ayuda en lo más mínimo.

Tienes que realmente administrar la memoria de tus aplicaciones. 290×330 puede no parecer mucho, pero si está utilizando RGBA completo que es de 4 bytes por píxel y su imagen se convierte en 380K. Si usted tiene varios de estos usted va a quedarse sin memoria. La mayoría de los dispositivos Android no son como PCs – tienen memoria bastante limitada. Algunos tienen sólo 16M ó 24M para ejecutar todo, incluido el sistema operativo y cualquier otra aplicación que el usuario pueda ejecutar simultáneamente.

Puede intentar envolver su rutina para cargar recursos con try / catch

  While( ! success ) { try { // load resources } catch (OutOfMemoryError E) { // do something to use less memory and try again } } 

Puede ocurrir si utiliza imágenes de alta resolución para móviles con menos resolución y menos memoria. Hacer uso Drawable-hdpi, Drawable-mdpi, Drawable-ldpi carpetas y colocar sus imágenes con una resolución adecuada.

FYI .. en su mayoría también puede ver este error en el emulador cuando heapSize es demasiado menor. Intente aumentar el tamaño del montón utilizando el administrador de AVD

Este vínculo podría ayudarlo Soportar múltiples resoluciones de pantalla

Mira el siguiente enlace de la memoria se ha discutido en detalle.

Android Fuera de problema de memoria

Para mí la solución de Thomas ha funcionado en el pasado.

Espero eso ayude.

Puede usar esto para liberar memoria:

 system.gc(); 
  • Botón de rebote en el grifo
  • La biblioteca existente para reproducir el efecto de zoom-in imageView de la aplicación Foursquare android?
  • Colapsar CardView dentro de RecyclerView al animar
  • Animaciones de diseño de Android de abajo hacia arriba y de arriba a abajo en ImageView
  • Windowmanager con animación
  • SearchView Expandir / contraer la animación en Android
  • Posibilidad de saltar directamente a la segunda vista en ViewAnimator
  • Animación Drawable causando OutOfMemoryError en segunda ejecución en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.