Descarga rápidamente mapas de bits de la memoria

Estoy creando este juego para Android en Java. Tengo muchas imágenes, pero no necesito usarlas todas a la vez, así que he creado una clase Resource Manger que se ocupa de los Bitmaps que están en uso. Sin embargo, he encontrado bastante lento para borrar el mapa de bits de la memoria. Actualmente estoy haciendo algo como esto:

bitmap.recycle() bitmap = null System.gc (also tried Runtime.getRuntime().gc()) 

En primer lugar, ¿hay alguna manera de descargar más rápido los mapas de bits de la memoria o es posible comprobar de alguna manera si en realidad se han borrado para que pueda hacer la pantalla de carga dependen de que también?

No hay ninguna garantía de que el recolector de basura realmente se ejecutará cuando intentamos System.gc () como gc () espera ciertas condiciones previas como el hambre de recursos. Por lo tanto, es bastante obvio que llamar a gc () está desperdiciando ciclos críticos de CPU. Como desarrollador podemos hacer objetos innecesarios para gc coleccionables anulando las referencias.

Hay un par de técnicas de optimización que pueden ser útiles al crear un sistema de juego (juego).

  1. Utilice Textura. He aquí un ejemplo .

  2. Utilizar Sprite y SpriteSheets (da menos sobrecarga al sistema que cargar mapas de bits individuales). Muchos motores de juegos de código abierto están ahí que utiliza this.If que no desea utilizarlos obtener una idea de cómo crear desde cero de estas fuentes.

  3. Utilice estos documentos android estándar para cómo cargar mapas de bits de gran tamaño de manera eficiente y caché de mapas de bits para un mejor uso de mapa de bits. La idea es cuando el dispositivo de los usuarios no es lo suficientemente eficiente para manejar la cantidad de procesamiento y / o la memoria es menor para su juego siempre se puede reducir el mapa de bits (compromiso con la calidad para una mejor respuesta).

  4. Pruebe siempre su aplicación contra problemas de pérdida de memoria. Este es un buen post que te ayudará.

  5. Mantenga InMemory (no suelte una vez utilizado) los elementos que se utilizan varias veces dentro del juego en la misma escena. La razón es que se necesita mucho tiempo para cargar imágenes en la memoria.

Espero que esto te ayudará.

Como dijo SylvainL, System.gc y sus amigos recogen la basura completa y pueden ser bastante lentos. La máquina Java ejecuta el GC periódicamente, y el período es finetuned dependiendo de cuánta memoria libre está disponible en un momento dado.

La mejor opción para mí es utilizar algún tipo de agrupación de mapas de bits: tener un conjunto de instancias de mapa de bits prefabricadas que puede adquirir y liberar en el grupo y administrar instancias de búfer en una caché que aplica políticas LRU.

Con el ajuste adecuado, puede obtener coste cero en la creación y destrucción de instancias de mapa de bits a medida que se agrupan, y las instancias de búfer que contienen datos de mapa de bits se cargarán dinámicamente y se descargarán de la memoria en función del uso.

  • Convertir todos los colores distintos de un color en particular en un mapa de bits a blanco
  • Convertir imagen a mapa de bits en android
  • ¿Cómo recortar el mapa de bits del área seleccionada en el lienzo?
  • Campo BitmapFactory.Options.inTempStorage
  • LayerDrawable al mapa de bits
  • Android + cargador universal de imágenes: muestra marcador personalizado con imagen en google map
  • ¿Hay una solución de reproducción de video más rápida que las funciones de AndroidBitmap_xxx?
  • Android intentando usar un mapa de bits reciclado, no en mi código
  • Android calcula el hash de un mapa de bits
  • Guardar Bitmap en un archivo - Xamarin, Monodroid
  • Problemas de calidad de mapa de bits Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.