El uso de memoria no disminuye ni siquiera reciclo bitmaps
Tengo A y B actividades. Cuando inicie la actividad B de la actividad A, establezco una variable estática de mapa de bits en la actividad B. Muestro ese mapa de bits en la pantalla y lo giro.
Cuando la actividad B está terminada, reciclo todos los mapas de bits en método onDestroy (), pero el uso de memoria no está disminuyendo.
- Envío de imagen por correo electrónico, Android?
- MAT (Eclipse Memory Analyzer) - cómo ver los mapas de bits del volcado de memoria
- Imagen sobre otra imagen Android
- Dibujar líneas transparentes en el mapa de bits a través de la entrada táctil
- No quiero que Android cambie el tamaño de mi mapa de bits automáticamente
@Override protected void onDestroy() { super.onDestroy(); if (bitmap90 != null) { bitmap90.recycle(); bitmap90 = null; } if (bitmap180 != null) { bitmap180.recycle(); bitmap180 = null; } if (bitmap270 != null) { bitmap270.recycle(); bitmap270 = null; } if (mBitmap != null) { mBitmap.recycle(); mBitmap = null; } if (((BitmapDrawable) ivOriginal.getDrawable()).getBitmap() != null) { ((BitmapDrawable) ivOriginal.getDrawable()).getBitmap().recycle(); ivOriginal.setImageDrawable(null); } if (((BitmapDrawable) ivOriginal90.getDrawable()).getBitmap() != null) { ((BitmapDrawable) ivOriginal90.getDrawable()).getBitmap().recycle(); ivOriginal90.setImageDrawable(null); } System.gc(); }
- Descarga asíncrona de mapas de bits en un adaptador, con énfasis en Bitmap.recycle ()
- Android, ¿Cómo almacenar la imagen en almacenamiento interno?
- Imagen seleccionada de gallary no va a establecer en ImageView
- Cómo escalar el mapa de bits antes de mostrarlo en el mapa?
- Cómo enmascarar Bitmap con el sombreado LinearGradient correctamente?
- Cómo obtener la altura de la vista dentro del adaptador para crear bitmap de tamaño?
- Cómo cambiar el color de fondo de un mapa de bits transparente guardado
- Impresión POS / ESC Apex3 image SOS
Desde Android Developer
Libere el objeto nativo asociado con este mapa de bits y desactive la referencia a los datos de píxeles. Esto no liberará los datos de píxeles de forma sincrónica; Simplemente permite que se recoja basura si no hay otras referencias . El mapa de bits está marcado como "muerto", lo que significa que lanzará una excepción si getPixels () o setPixels () se llama y no dibujará nada. Esta operación no se puede revertir, por lo que sólo se debe llamar si está seguro de que no hay otros usos para el mapa de bits. Esta es una llamada avanzada, y normalmente no es necesario que se llame, ya que el proceso GC normal liberará esta memoria cuando no hay más referencias a este mapa de bits.
Reciclar sólo se asegura de que su mapa de bits será reciclado cada vez GC se llama. Lo mismo ocurre con System.gc, no puede asegurarse de que gc se ejecute ahora mismo, sólo le pedirá al gc para ejecutar, pero GC sólo se ejecutará cuando el sistema quiere que se ejecute.
Tan apenas relaje, si usted está reciclando los mapas de bits que conseguirán reciclados apenas darle algún tiempo eventual.