Android Bitmap Obtiene imágenes de la red y maneja problemas de desbordamiento
En Java, JavaVM tiene la función de administración automática de memoria y el GC de Java puede realizar la recolección de basura, pero si ImageView usa demasiados mapas de bits, a menudo se informará OOM (memoria insuficiente).
Causas y soluciones al desbordamiento de memoria:
Utilice BitmapFactory.decodeStream en lugar del método createBitmap
La razón es que este método lee directamente los bytes de la imagen y llama a JNI. >>nativeDecodeAsset() completa la decodificación.
Utilizar tecnología de lectura comprimida
BitmapFactory.Options options = new BitmapFactory.Options();
options.final int height = options.outHeight;
p>
? final int ancho = opciones.outWidth;
? opciones.inSampleSize = 1;
int w = 320;
? int h = 480;
? h = ?w*height/width;//calcular la relación entre ancho y alto
?
? int b = opciones.outHeight / h;
? opciones.inSampleSize = Math.max(a, b);
? false;
p>?Bitmap bitmap = BitmapFactory.decodeFile(imageSdUri, opciones);
3. Liberar Bitamp
Cuando no se utiliza el objeto Bitmap, deberíamos llamar a reciclar() para liberar memoria y luego configurarla como nula. Si bien parece que cuando se llama a recycle() desde el código fuente debería liberar inmediatamente la memoria principal del mapa de bits, las pruebas muestran que no es así. Pero creo que aún así debería acelerar significativamente la liberación de la memoria principal de Bitmap.