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?".
- Android Eclipse DDMS> Heap> Causa gris de GC
- Cómo implementar el almacenamiento en caché ListView en Android
- Error de memoria insuficiente al utilizar la API de Google Maps
- Servicio remoto, pérdidas de actividad al girar
- Uso de la memoria de imagen de fondo Android
Aquí hay un ejemplo:
- Pantalla 1 redirecciona a la pantalla 2
- La pantalla 2 contiene el control A (vista previa de la foto grande)
- Control A contiene ImageView B
- 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.
- Pocas pérdidas de memoria en Facebook SDK
- ¿Cómo elegir el tamaño de imagen óptimo para no exceder el presupuesto de VM?
- Tipos de memoria de Android (RAM v Memoria interna)
- Cómo liberar memoria en android para evitar fugas de memoria
- ¿Por qué se trata de una pérdida de memoria
- Fuera de la memoria de excepción + análisis de volcado de archivos hprof
- Prueba de memoria de Android
- La mejor manera de evitar pérdidas de memoria en el fragmento android
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.
- JGoodies para Android?
- Android cómo distinguir la aplicación en segundo plano y la actividad en segundo plano?