usarlo samsung saber rapido qué que porque para más muy mucha mejor descargan descarga cómo consumo consumen consume celular batería bateria app aplicaciones ahorrar ahorrador java android optimization battery

java - samsung - ¿Mi aplicación Android está agotando la batería?



mi celular consume mucha bateria (8)

Estoy desarrollando un juego para Android. Utiliza una vista de superficie y utiliza el tipo de API de dibujo 2D estándar proporcionadas. Cuando lancé el juego por primera vez, estaba haciendo todo tipo de cosas tontas, como volver a dibujar 9 parches en cada fotograma y también con texto. Desde entonces he optimizado gran parte de esto dibujando objetos de mapa de bits y dibujándolos en cada cuadro, solo volviendo a dibujar sobre los objetos de mapa de bits cuando sea necesario.

He recibido quejas sobre el consumo de batería antes y, tras mis modificaciones, me gustaría saber (científicamente) si realizo alguna mejora. Lamentablemente, no tengo datos previos, por lo que sería más útil comparar el rendimiento con otro juego.

He estado ejecutando Traceview y usando los resultados del mismo en su mayoría para identificar los métodos que consumen tiempo de CPU.

Entonces, ¿cuál es la mejor manera de determinar el rendimiento de la batería de mi aplicación y cuál es un buen punto de referencia?

Sé que puedo ver el% s de diferentes aplicaciones a través de la configuración, pero esto tampoco es científico, ya que la cifra que obtengo de esto también depende de lo que esté sucediendo en todas las otras aplicaciones. He revisado (la mayoría de) la documentación de Google, y aunque el mensaje es claro de que debes guardar la batería (y da un consejo ocasional sobre cómo), hay pocos indicios de cómo puedo medir qué tan bien está mi aplicación amaestrado. ¡Lo último que quiero son más quejas de agotamiento de batería en Android Market!

Gracias por adelantado.

EDITAR

Gracias por todos sus útiles consejos / sugerencias. Lo que realmente quiero saber es cómo puedo usar los datos provenientes de Traceview (es decir, el tiempo de CPU en MS gastado en cada cuadro del juego) para determinar el uso de la batería (si es posible). Leyendo nuevamente mi pregunta original, puedo ver que era un poco vago. Gracias de nuevo.


"Sé que puedo ver el% s de diferentes aplicaciones a través de la configuración, pero esto nuevamente no es científico, ya que la cifra que obtengo de esto también depende de lo que está sucediendo en todas las otras aplicaciones".

Lo primero que haría es buscar una aplicación que ya tenga un uso conocido y consistente de la batería, y luego puede usarla como referencia para determinar el uso de su aplicación.

Si no existe tal aplicación, tendrá que esperar una respuesta de otra persona ... y si tiene éxito en crear una aplicación de este tipo, le sugiero que venda su nueva aplicación de "referencia de uso de la batería" para que otros programadores puedan usarla. . :)


cómo puedo usar los datos provenientes de Traceview (es decir: tiempo de CPU en ms gastados en cada cuadro del juego) para determinar el uso de la batería (si esto es posible)

En teoría, sería posible extrapolar el uso de la batería de su aplicación mirando el consumo de energía cuadro por cuadro. La mejor manera de lograr esto sería evaluar el consumo de energía de la CPU (solo) durante un período determinado (digamos dos segundos) mientras su aplicación está ejecutando la mayor operación de CPU (además, el consumo de energía de la GPU podría obtenerse de esta manera también) durante la grabación de datos de TraceView (como fotogramas por segundo o flops por segundo) que le dan el tráfico a través de la CPU / GPU durante un milisegundo dado. Con esta información, puede calcular con precisión el consumo promedio de energía pico para su aplicación ejecutando la prueba anterior varias veces.

He aquí por qué digo que solo es teoría: hay muchas variables a considerar:

  1. El número y la naturaleza de otros procesos que se ejecutan en el momento de la prueba anterior (intensivo del procesador)
  2. Método para evaluar el consumo de energía en la CPU / GPU (mientras que herramientas como PowerTutor son efectivas para evaluar el consumo de energía, en este caso la evaluación no sería tan efectiva debido a la necesidad de recopilar datos de uso de energía con sello de tiempo. cualquier método de recolección de datos de energía introduciría una carga adicional ( gato de Schrödinger ) pero eso depende estrictamente del nivel de precisión que requiera / desee.)
  3. El motivo de la información sobre el consumo de energía: si está buscando definir el consumo de energía de su aplicación para pruebas o pruebas BETA / evaluación, entonces es una tarea factible con cierta determinación y las herramientas adecuadas. Si está buscando obtener información utilizable sobre el consumo de energía "en la naturaleza", en los dispositivos del usuario, entonces diría que es plausible pero no realista. Los vairables implicados harán que hasta el investigador más decidido y dedicado se desmaye. Debería probar todas las combinaciones posibles de dispositivo / versión de Android en la naturaleza. Además, las combinaciones de procesos / subprocesos en ejecución y aplicaciones instaladas probablemente sean incalculables.

Espero que esto proporcione alguna información sobre su pregunta, aunque es posible que haya profundizado más de lo necesario.

-Steve


Aquí está mi sugerencia:

Observo el consumo de energía mientras desarrollo mis aplicaciones (que a veces sondean los sensores a tasas de <25ns) usando PowerTutor . Compruébelo, parece que esto tal vez lo que está buscando, la aplicación le dice lo que está usando en mW, J o en relación con el resto del sistema. Además, los resultados se desglosan por CPU, WiFi, pantalla (otras radios instaladas). El único inconveniente es que está escrito para un modelo de teléfono específico, pero lo uso con gran éxito en mi EVO 4G, Galaxy S (Sprint Epic) y Hero.

Buena suerte, -Steve


Existe la posibilidad de que tu juego esté agotando la batería. Creo que esto depende de varias razones, que dice lo siguiente:

  • Tu aplicación es un juego . Los juegos agotan la batería rápidamente.
  • Estás iterando con la ayuda de un Thread . ¿Ha limitado el FPS para que la CPU omita iteraciones innecesarias? Como trabaja con 2D, supongo que está utilizando SurfaceView . 60 FPS serán suficientes para un juego en tiempo real.
  • No detiene el Thread cuando finaliza su aplicación. Por lo tanto, reiteras el código cuando tu aplicación no está activa.
  • Tiene un bloqueo de iteración que wait(); durante onPause ?

Las personas que comentan que su juego está goteando batería probablemente apuntan cuando su aplicación no está en uso. De lo contrario, sería extraño porque cada juego en Android Market consume batería, más o menos.



Para cualquiera que esté buscando, un recurso que hemos estado usando y que es extremadamente útil es una aplicación gratuita de AT & T llamada ARO.

Dale un vistazo: ARO

Me ha ayudado antes y no lo veo muy a menudo, así que pensé en dejarlo aquí para cualquiera que lo mire.



Si estás tratando de medir la "mejora sobre tu versión anterior", ¡no creo que tenga sentido compararla con otro juego! A menos que esos dos juegos hagan exactamente lo mismo, esto es tan poco científico como puede ser.

En cambio, tomaría la versión anterior de su aplicación del control de código fuente, la ejecutaría, la mediría, y luego la ejecutaría con el último código y lo compararía nuevamente.

Para comparar, podría, por ejemplo, usar la herramienta de línea de comando "arriba" (definitivamente disponible en busybox si su teléfono está rooteado, no estoy seguro de si viene con un stock de teléfono. Probablemente no). Eso le muestra el uso de CPU de su proceso en porcentaje.