¿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!

2 Solutions collect form web for “¿Cómo saber cuánto tamaño de montón libre está disponible para bitmap para Android 2. *?”

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?

  • Necesito enviar un archivo de imagen al servidor de Clarifai para la clasificación de imágenes, pero sigo recibiendo "marcos omitidos, aplicación que hace demasiado trabajo"
  • Tome la imagen y convertir a Base64
  • Escala de imagen sin perder calidad de imagen no funcionó
  • ImageView: recicla automáticamente el mapa de bits si ImageView no está visible (dentro de ScrollView)
  • Cambiar el tamaño de un mapa de bits a un valor fijo, pero sin cambiar la relación de aspecto
  • Cargando imágenes con Picasso desde el almacenamiento interno
  • ¿Hay una manera de fijar el backgound de la barra de acción por la imagen en androide?
  • Captura toda la vista de desplazamiento más grande que la pantalla
  • Cómo dibujar un mapa de bits en un lienzo, respetando los valores alfa del mapa de bits?
  • Cómo obtener Bitmap de WebView genera un fallo de OutOfMemory
  • Azulejo de un mapa de bits en SurfaceView Canvas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.