Rendimiento en Android Juego
Codifiqué un juego para Android. Para cada trama utilizo el mismo procedimiento.
Así que mi juego funciona suave, pero en algunos momentos el juego se atasca. Busqué con deltaTimes en los métodos, pero no es fácil encontrar el problema.
- ¿Cómo puedo configurar mi aplicación de Android?
- Throwable: No se pudo crear la tarjeta SD
- ¿Por qué se crea un FrameLayout extra para fragmentos?
- Android: rendimiento lento con una gran imagen en ImageView
- Hashmap vs Bundle en Android Eficiencia y comparación de rendimiento
En la imagen de la deltaTiempo entre los fotogramas: Usted puede ver los picos. Entre los picos el juego corre sin problemas.
Así que mi pregunta para usted es, ¿conoces un profiler o algo parecido en eclipse para encontrar la razón de los picos? ¿O sabes un sitio web con tipps de rendimiento para el desarrollo de juegos en android?
El recolector de basura no lo es, porque en la consola de depuración el mensaje no aparece.
// EDIT 1: Después de buscar más tipps de rendimiento, agregué una clase de tema personalizada:
<resources> <style name="Theme.NoBackground" parent="android:Theme"> <item name="android:windowBackground">@null</item> </style> </resources>
Esto me dio un mejor rendimiento, pero todavía hay picos altos.
- ¿Por qué la aplicación diseñada por el material es más lenta que la aplicación diseñada por holo?
- Android HTTP Publicar en una URL sin parámetros
- ¿por qué mi aplicación Android es tan lenta?
- La función geocoder.getFromLocation lanza la excepción "Expiración del tiempo de espera de respuesta del servidor"
- Cómo acelerar el proceso de compilación de Android Studio
- Android: ANR Tiempo de espera de envío excedido
- Java MappedByteBuffer.get () sorprendentemente lento
- Reduzca el tamaño de la aplicación de Android
Una de las razones más grandes para estos tipos de picos es cuando la recolección de basura comienza. Los marcos paran un lento si usted tiene decir un arraylist de burbujas, y cada burbuja contiene una imagen, usted utilizaría un sistema de la agrupación para reutilizar las burbujas más bien que Dejando que el recolector de basura se acumule, lo que causaría estos picos.
La recolección de basura debe evitarse mientras el juego se está ejecutando y los elementos se deben cargar al inicio del juego.
Algunos artículos aquí que pueden ser de utilidad para usted ..
Evite usar el for-loop mejorado para ArrayLists en juegos con Android
Pool de objetos para juegos con Android
Puede utilizar traceview para ver dónde pasa su tiempo.
Perfilado con traceview
Y hay algunas prácticas recomendadas proporcionadas por Android para mejorar el rendimiento de una aplicación.
Consejos de rendimiento
Definitivamente parece una recolección de basura. Para verificar esto, puede filtrar los mensajes de logcat que comienzan con "GC_" mientras se ejecuta el juego.
Otros ya han publicado consejos para arreglar eso, esto es lo que añadiría: mira cada línea que contiene el operador new () y piensa en dónde la instancia creada acabará con su vida útil. Si es durante el juego, debe ser cambiado.
- PhoneGap-Android: Notificación de empuje de Urban Airship desde mi servidor
- Paginación de ListView en android