Red de conocimiento informático - Computadora portátil - El mapa de bits de Android obtiene y maneja los problemas de desbordamiento de la red.

El mapa de bits de Android obtiene y maneja los problemas de desbordamiento de la red.

En Java, JavaVM tiene la función de administrar automáticamente la memoria y Java GC puede recolectar basura. Sin embargo, si ImageView usa demasiados mapas de bits, a menudo se informará un error 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() para completar la decodificación sin utilizar el createBitmap de la capa Java.

Utiliza tecnología de lectura comprimida

Fábrica de mapas de bits. opciones opciones = nuevo BitmapFactory. opciones();

opciones . injustdecodebounds = true;

bitmapfactory .deco canal(imágenes duri, opciones

? altura int final = opciones altura de salida;

? ancho int final = opciones ancho de salida;

? opciones en tamaño de muestra = 1;

? int w = 320

? int h = 480

? h=? w *alto/ancho; //Calcular la relación de aspecto.

? int a = opciones.outWidth/ w;

? int b = opciones . altura de salida/h;

? opciones en tamaño de muestra = matemáticas. max(a, b); opciones .injustdecodebounds = false;

? mapa de bits mapa de bits =? bitmapfactory.deco canal(images duri, options);

3. Liberar Bitamp a tiempo

Cuando no se utiliza el objeto de mapa de bits, primero debemos llamar a recycle() para liberar la memoria. y luego se establece en nulo. Aunque a juzgar por el código fuente, llamar a recycle() debería liberar inmediatamente la memoria principal del mapa de bits, los resultados de la prueba muestran que la memoria no se libera inmediatamente. Pero creo que aún debería acelerar enormemente la liberación de la memoria principal de mapa de bits.