¿Cómo saber cuánto tamaño de montón libre está disponible para bitmap para Android 2. *?

Nuestra aplicación utiliza una gran cantidad de mapas de bits. Funciona bien por ejemplo en G1, XOOM. Pero en HTC Desire hay un error OutOfMemory. En código usamos try / catch (OutOfMemoryError e) y todos los dispositivos (excepto Desire) lanzan excepción, pero HTC simplemente mata la aplicación sin excepción de OOM. Hemos restringido la memoria de mapas de bits a 12 Mb y parecía que esta solución solucionó el problema, pero el cliente todavía tiene problemas en HTC Desire HD. Hay OOM incluso con restricción de 12 Mb. Aquí están los registros:

06-07 12:03:43.978 E/dalvikvm-heap( 29616):1140128-byte external allocation too large for this process. 06-07 12:03:43.978 E/dalvikvm( 29616):Out of memory: Heap Size=12311KB, Allocated=9420KB, Bitmap Size=12139KB, Limit=21884KB 06-07 12:03:43.978 E/dalvikvm( 29616):Trim info: Footprint=15751KB, Allowed Footprint=15751KB, Trimmed=3440KB 06-07 12:03:43.978 E/GraphicsJNI( 29616):VM won't let us allocate 1140128 bytes 

AFAIK hay diferentes limitaciones de tamaño de montón para dispositivos (G1: 16mb, Droid: 24 mb, Xoom 48 mb). En mi opinión el sistema debe dar por lo menos 16 mb, pero tenemos OOM con 12mb. Mi pregunta es: ¿Cómo saber cuántos tamaño de montón libre disponible para bitmap para Android 2. *? O por favor consejo cómo evitar este problema de otras maneras. FYI no podemos utilizar menos mapas de bits, especialmente cuando funciona bien en otros dispositivos. ¡Gracias de antemano por cualquier ayuda!

Puedes probar

 Runtime.getRuntime().maxMemory(); 

O el método de la actividad

 getMemoryInfo(ActivityManager.MemoryInfo; 

Además, puede anular la Actividad

 onLowMemory(); 

, En el que puede manejar lo que ocurrirá cuando la Activity get sea notificada del problema de memoria, antes de ser apagada. Y también debe comprobar esta respuesta desde un dispositivo Android en la memoria de Android / Linux.

Esta excepción OutOfMemory proviene de una pérdida de memoria no del propio archivo. ¿Está sobreescribiendo los métodos del ciclo de vida de la actividad como onStop, onResume, onDestroy?

  • Imágenes de escala baja en Android: ¿se puede hacer?
  • Android: cómo crear un botón sobre Bitmap dinámicamente o botón OVERLAYING?
  • Fuga de memoria de Android: InputMethodManager, mapa de bits
  • ¿Cómo elegir el tamaño de imagen óptimo para no exceder el presupuesto de VM?
  • Obtener mapa de bits de ImageView en Android L
  • Cómo hacer una miniatura de una foto tomada de la cámara?
  • Cómo convertir bitmap a PNG y luego a base64 en Android?
  • Android - Desvanece imagen de mapa de bits en lienzo
  • Dibujo androide en evento táctil
  • Imagen de fondo de Android Widget Cambiar
  • Obtener información de mapa de bits de mapa de bits almacenado en carpeta dibujable
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.