Cómo limpiar los recursos de mapa de bits

Quería hacer esta pregunta que se hizo varias veces antes. Lo siento si estoy re-itterating pero no está claro para mí en cuanto a cuál es la mejor solución aquí.

La pregunta es "¿cómo limpiar ImageView recurso de mapa de bits después de su utilizado por lo que no tienen referencias a ella en la memoria?".

Aquí hay un ejemplo:

  1. Pantalla 1 redirecciona a la pantalla 2
  2. La pantalla 2 contiene el control A (vista previa de la foto grande)
  3. Control A contiene ImageView B
  4. ImageView B se establece cuando se inicia el control A

Todo funciona bien la primera vez. Una vez hecho el control A, redirijo desde la Pantalla 2 a la Pantalla 1. En este punto todas las referencias de control A o ImageView B o Bitmap que su uso debería estar muerto. ¡¡¡ELLOS NO SON!!!

He intentado todo tipo de soluciones incluyendo bitmap.recycle (), añadiendo finalize () en Control A, System.gs () y anulando el control en lugares variouse como onStop () y onDestroy (), y todo lo demás que está en la pantalla 2, nada funciona!

El problema es cuando vuelvo a revisar la segunda vez de la pantalla alrededor así que va de la pantalla 1 a la pantalla 2 (es decir, creando la vista previa de la foto de nuevo) salgo de la excepción de memoria. Entiendo que la referencia del mapa de bits anterior no se ha limpiado.

¿Cómo puedo matarlo justo antes de redirigir de nuevo a la pantalla 1?

Una cosa que noté. Si redujo el tamaño de la foto, por ejemplo, cortar o hacer un tamaño más pequeño de la imagen todo va suave, pocas veces … antes de obtener el mismo problema. Así que básicamente sólo toma un poco más de tiempo para llenar.

Realmente apreciaría alguna solución aquí ya que esto es crítico.

Probablemente tenga una pérdida de memoria, este video podría ayudarle a encontrar el problema Google I / O 2011: Administración de memoria para aplicaciones de Android .

Nota: los mapas de bits pre 3.1 se almacenan en la memoria heap de VM, pero en la memoria nativa, lo que causa muchos problemas en la detección de fugas, para más información consulte el video

Echa un vistazo a cómo WeakReference se utiliza.

  • Memoria interna llena de imágenes, probablemente causada por Bitmap.compress (formato, int, flujo)
  • Atascado en "Vaciar memoria, la aplicación se congelará. Brrr. "Mensaje
  • Error de memoria de mapa de bits - Android
  • Error de apertura del archivo HPROF
  • Problema de memoria de Viewview de Viewpager
  • Reciclaje de bitmaps
  • Android - es onDestroy supone destruir la actividad, sus variables y liberar memoria
  • Bitmaps de Android en la memoria de fugas xml?
  • Iteradores temporales de Java están ralentizando mi Android
  • reutilizar las mismas instancias de Diálogos
  • Alto uso de memoria RAM para la aplicación vacía de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.