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?".
- El servidor NanoHttpd no puede transmitir videos grandes en android
- Cuando Android ofrece Excepción OutOfMemory?
- Android VM No nos permite asignar xx bytes
- El montón de memoria de aplicaciones de Android sigue creciendo
- Error de memoria insuficiente al utilizar la API de Google Maps
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.
- Android: acelerómetro de lectura sin asignación de memoria?
- reutilizar las mismas instancias de Diálogos
- eliminar vistas que no son visibles en gridView
- ¿Cuánto cuesta el receptor de radiodifusión por la memoria?
- Simula la memoria baja en el dispositivo real de Android
- ¿El aumento de tamaño de jittable se correlaciona con la pérdida de memoria en android?
- Problema de memoria de Viewview de Viewpager
- OutOfMemoryError cuando se utiliza Gson para analizar una gran respuesta JSON
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?