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.

  • Mostrar imagen grande de la tarjeta SD en Android
  • Android Eclipse DDMS> Heap> Causa gris de GC
  • Java - ¿Tendrá beneficios el código inlining?
  • La mejor manera de evitar pérdidas de memoria en el fragmento android
  • Necesita ayuda para comprender la pérdida de memoria en mi aplicación de Android
  • Cuerdas y gestión de memoria
  • ¿Qué es lo que hace Bitmap # recycle () en Android Honeycomb?
  • Fuga de memoria MediaControllerCompat
  • Android: Fuera de error de memoria
  • Bitmaps de Android en la memoria de fugas xml?
  • Cómo rastrear la memoria máxima consumida por la aplicación Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.