Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Mi aplicación Android drena la batería?

Estoy desarrollando un juego para Android. Utiliza una vista de superficie y utiliza el tipo de API de dibujo 2D estándar proporcionado. Cuando empecé a lanzar el juego, estaba haciendo todo tipo de cosas tonto como volver a dibujar 9 parches en cada fotograma y también con texto. Desde entonces, he optimizado mucho de esto dibujando a objetos de mapa de bits y dibujándolos cada marco, sólo volver a dibujar en los objetos de mapa de bits cuando sea necesario.

He recibido quejas sobre el drenaje de la batería antes, y siguiendo mis modificaciones quisiera saber (científicamente) si he hecho alguna mejora. Por desgracia, no tengo ningún dato previo para pasar, por lo que sería más útil comparar el rendimiento con algún otro juego.

  • ¿Cómo usar relativelayout.setBackgroundDrawable () con un mapa de bits?
  • Eliminar el relleno de texto en la vista de botón
  • La plataforma L es una vista previa y requiere el manifiesto de aplicación para establecer minSdkVersion en 'L'
  • Escala la imagen de fondo para ajustar el contenido del diseño
  • Reinicio de la aplicación de Android después de que se haya ejecutado el proceso
  • Cómo evitar que el bloqueador de anuncios bloquee anuncios en una aplicación
  • He estado corriendo Traceview, y el uso de los resultados de la misma en su mayoría con el fin de identificar los métodos de CPU-time-consuming.

    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 mirar el% s de diferentes aplicaciones a través de la configuración, pero esto es otra vez no científico, ya que la figura que obtengo de esto también depende de lo que está sucediendo en todas las otras aplicaciones. He mirado a través de (la mayoría de) la documentación de Google, y aunque el mensaje es claro que debe ahorrar batería (y da la punta ocasional de cómo), hay poca indicación de cómo puedo medir lo bien que mi aplicación es amaestrado. Lo último que quiero son más quejas de la batería de drenaje en el 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 procedentes de Traceview (es decir, el tiempo de CPU en ms gastado en cada fotograma del juego) para determinar el uso de la batería (si esto es posible). Leyendo sobre mi pregunta original, puedo ver que era un poco vago. Gracias de nuevo.

  • Swipeleft / swiperight activado durante el desplazamiento vertical en jQuery móvil
  • ¿Cómo consultar al proveedor de contenido de Android MediaStore, evitando las imágenes huérfanas?
  • Uso de GSON con proguard habilitado
  • ¿Cómo ejecutar aplicaciones externas, descargadas pero no instaladas en Android?
  • Conseguir que Picasso recupere las imágenes futuras
  • Cómo configurar la altura de gridview programáticamente android
  • 8 Solutions collect form web for “¿Mi aplicación Android drena la batería?”

    Aquí está mi sugerencia:

    Observo el consumo de energía mientras desarrollo mis aplicaciones (que a veces encuestan los sensores a velocidades de <25ns) usando PowerTutor . Compruébelo, suena como esto quizás qué usted está buscando, la aplicación le dice lo que usted está utilizando en mW, J, o relativo al resto del sistema. Además, los resultados se desglosan por CPU, WiFi, Display, (otros radios instalados). El único problema 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:

    • Su aplicación es un juego . Los juegos drenan 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? Puesto que usted está trabajando con 2D supongo que está utilizando el SurfaceView . 60 FPS será suficiente para un juego en tiempo real.
    • No detiene el Thread cuando se termina su aplicación. Por lo tanto, repetir el código cuando su aplicación no está vivo.
    • Tiene un bloqueo iterado que no wait(); Durante onPause ?

    La gente comentando que su juego es una batería con fugas probablemente apunta cuando su aplicación no está en uso. De lo contrario, sería extraño porque cada juego en Android Market drena la batería – más o menos.

    Si usted está tratando de medir la "mejora sobre su versión anterior", no creo que tiene sentido para comparar a otro juego! A menos que estos dos juegos hagan exactamente lo mismo, esto es tan poco científico como es posible.

    En su lugar, me gustaría agarrar la versión anterior de su aplicación de control de código fuente, ejecutarlo, medirlo, y luego ejecutarlo con el código más reciente y comparar de nuevo.

    Para comparar, podría por ejemplo utilizar la herramienta de línea de comandos "top" (definitivamente disponible en busybox si su teléfono está arraigado, no está seguro de si viene con un teléfono de stock, probablemente no). Eso le muestra el uso de CPU de su proceso en porcentaje.

    Hay un generador de perfiles de batería desarrollado por Qualcomm llamado Trepn Profiler: https://developer.qualcomm.com/mobile-development/increase-app-performance/trepn-profiler

    Cómo puedo usar los datos procedentes de Traceview (es decir, el tiempo de CPU en ms gastado en cada fotograma 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 para su aplicación mirando el consumo de energía en una base de marco por cuadro. La mejor manera de lograr esto sería evaluar el consumo de energía de la CPU (sólo) durante un período determinado (digamos dos segundos) mientras su aplicación está ejecutando la mayor parte de la CPU de operación, (además, el uso de la energía GPU podría ser recogido de esta manera También) durante la grabación de datos de TraceView (como los fotogramas por segundo o flops por segundo) que le da el tráfico a través de la CPU / GPU durante un milisegundo determinado. Utilizando estos datos, puede calcular con precisión el consumo promedio de energía de pico de su aplicación ejecutando la prueba anterior varias veces.

    He aquí por qué digo que es sólo 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 (procesador intensivo)
    2. Método de evaluación del consumo de energía a través de la CPU / GPU (mientras que las herramientas como PowerTutor son eficaces 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 estampado de tiempo. Cualquier método de recolección de datos de potencia introduciría una sobrecarga adicional ( el gato de Schrödinger ) pero que depende estrictamente del nivel de precisión que requiera / desea).
    3. La razón de la información de consumo de energía – Si usted está buscando para definir el consumo de energía de su aplicación para la prueba o BETA fines de prueba / evaluación, entonces es una tarea factible con cierta determinación y las herramientas adecuadas. Si usted está buscando para obtener información útil sobre el consumo de energía "en estado salvaje", en los dispositivos del usuario, entonces yo diría que es plausible pero no realista. Las variaciones implicadas harían que el investigador más decidido y dedicado se desmayara. Usted tendría que probar en cada posible combinación de dispositivo / versión de Android en la naturaleza. Además, es probable que las combinaciones de procesos / subprocesos en ejecución y aplicaciones instaladas sean incalculables.

    Espero que esto proporcione una cierta penetración a su pregunta, aunque he podido profundizar en ella más de lo necesario.

    -Steve

    Para cualquier persona que busca, un recurso que hemos estado utilizando que es extremadamente útil es una aplicación gratuita de AT & T llamado ARO.

    Echa un vistazo: ARO

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

    "Sé que puedo mirar el% s de diferentes aplicaciones a través de la configuración, pero esto es otra vez poco científico, ya que la figura 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 tiene un uso de batería conocido y consistente, y luego puedes usarla como referencia para determinar el uso de tu aplicación.

    Si no existe una aplicación de este tipo, tendrá que esperar una respuesta de otra persona … y si tiene éxito en hacer una aplicación así, sugeriría vender su nueva aplicación de referencia de uso de la batería para que otros programadores puedan utilizarla . 🙂

    Sé que esta pregunta es vieja y es tarde, pero para cualquiera que venga aquí en busca de una solución le sugiero que eche un vistazo a la prueba JouleUnit: http://dnlkntt.wordpress.com/2013/09/28/how-to-to- Prueba-energía-consumo-en-android-dispositivos /

    Se integra en eclipse y te da una gran cantidad de detalles sobre cuánta batería está consumiendo tu aplicación.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.