Является ли приложение Android для удаления батареи?

Я разрабатываю игру для Android. Он использует вид поверхности и использует стандартные стандартные API-интерфейсы рисования. Когда я впервые выпустил игру, я делал всевозможные глупые вещи, такие как повторное рисование 9-патчей на каждом кадре, а также с текстом. С тех пор я оптимизировал большую часть этого, обратившись к объектам Bitmap и вычерчивая их каждый кадр, только при необходимости перерисовывая объекты Bitmap.

Я получил жалобы на утечку батареи раньше, и после моих модификаций я хотел бы узнать (с научной точки зрения), если бы сделал какие-либо улучшения. К сожалению, у меня нет никаких предварительных данных, поэтому было бы очень полезно сравнить производительность с какой-либо другой игрой.

Я запускаю Traceview и использую его результаты в основном для целей определения времени, затрачиваемого на процессор.

Итак - , что лучший способ определить производительность аккумулятора моего приложения и какой хороший уровень?

Я знаю, что я могу посмотреть% s разных приложений через настройки, но это опять-таки ненаучно, поскольку цифра, которую я получаю от этого, также зависит от того, что происходит во всех других приложениях. Я просмотрел (большую часть) документации Google, и хотя в сообщении ясно, что вы должны экономить батарею (и она дает случайный отзыв о том, как), нет никаких указаний на то, как я могу измерить, насколько хорошо мое приложение выполнения. Последнее, что я хочу, - это больше жалоб на утечку батареи в Android Market!

Спасибо заранее.


ИЗМЕНИТЬ

Спасибо за все ваши полезные советы/предложения. То, что я действительно хочу знать, - это , как я могу использовать данные, поступающие из Traceview (то есть: время процессора в мс, потраченное на каждый кадр игры), чтобы определить использование батареи (если это вообще возможно), Читая назад свой первоначальный вопрос, я вижу, что я немного расплывчата. Еще раз спасибо.

Ответ 1

Вот мое предложение:

Я наблюдаю за потреблением энергии при разработке моих приложений (которые иногда опросили датчики со скоростью < 25ns), используя PowerTutor. Проверьте это, похоже, что это может быть то, что вы ищете, приложение сообщает вам, что вы используете в mW, J или относительно остальной части системы. Кроме того, результаты разбиваются на CPU, WiFi, Display, (другие радиостанции установлены). Единственный улов в том, что он написан для конкретной модели телефона, но я использую его с большим успехом на своих EVO 4G, Galaxy S (Sprint Epic) и Hero.

Удачи, -Стив

Ответ 2

Существует вероятность, что ваша игра разряжается. Я считаю, что это зависит от нескольких причин, которые гласят следующее:

  • Ваше приложение - игра. Игры быстро разряжают аккумулятор.
  • Вы выполняете итерацию с помощью Thread. Ограничили ли вы FPS, чтобы процессор пропускал ненужные итерации? Поскольку вы работаете с 2D, я предполагаю, что вы используете SurfaceView. 60 FPS будет достаточно для игры в реальном времени.
  • Вы не останавливаете Thread, когда ваше приложение завершается. Следовательно, вы повторяете код, когда ваше приложение неактивно.
  • У вас есть итерационный замок, который делает wait(); во время onPause?

Люди, комментирующие, что ваша игра является утечкой батареи, вероятно, направлены на то, что ваше приложение не используется. В противном случае это было бы странно, потому что каждая игра на Android Market истощает батарею - более или менее.

Ответ 3

Если вы пытаетесь оценить "улучшение по сравнению с предыдущей версией", я не думаю, что имеет смысл сравнивать с другой игрой! Если эти две игры не делают точной, это так же ненаучно, как и получается.

Вместо этого я бы взял предыдущую версию вашего приложения из исходного элемента управления, запустил его, измерил, а затем запустил с последним кодом и сравнил его снова.

Для сравнения вы можете, например, использовать инструмент командной строки "top" (определенно доступный в busybox, если ваш телефон укоренен, не уверен, что он поставляется с запасным телефоном. Возможно, нет). Это показывает, что процессор использует ваш процесс в процентах.

Ответ 5

как я могу использовать данные, поступающие из Traceview (то есть: время процессора в мс, потраченное на каждый кадр игры), чтобы определить использование батареи (если это вообще возможно)

В теории можно было бы экстраполировать использование батареи для вашего приложения, посмотрев на потребление энергии по кадрам. Лучшим способом добиться этого было бы оценить энергопотребление процессора (только) за определенный период (скажем, две секунды), в то время как ваше приложение запускает большую интенсивную работу с процессором (кроме того, использование мощности GPU можно было бы почерпнуть таким образом также) при записи данных TraceView (например, кадров в секунду или флопов в секунду), что дает вам трафик через процессор/графический процессор для данной миллисекунды. Используя эти данные, вы можете точно рассчитать среднюю пиковую потребляемую мощность вашего приложения, выполнив вышеуказанный тест несколько раз.

Вот почему я говорю, что это только теория: есть много переменных:

  • Количество и характер других процессов, запущенных во время вышеупомянутого теста (интенсивность процессора)
  • Метод оценки мощности по CPU/GPU (в то время как инструменты, такие как PowerTutor, эффективны для оценки энергопотребления, в этом случае оценка не будет такой эффективной из-за необходимости сбора данных об использовании времени с отметкой времени., практически любой способ сбора данных о мощности вводит дополнительные накладные расходы (Schrödinger cat), но это строго зависит от требуемого уровня точности.)
  • Причина для информации о потреблении энергии. Если вы хотите определить энергопотребление вашего приложения для тестирования или тестирования/оценки BETA, тогда это выполнимая задача с некоторым определением и правильными инструментами. Если вы хотите получить полезную информацию об энергопотреблении "в дикой природе", на пользовательских устройствах, то я бы сказал, что это правдоподобно, но не реалистично. Причастные вайрабы заставили бы даже самого решительного и преданного исследователя ослабевать. Вам придется тестировать все возможные комбинации устройств /Android в дикой природе. Кроме того, комбинации запущенных процессов/потоков и установленных приложений, вероятно, неисчислимы.

Надеюсь, это даст вам некоторое представление о вашем вопросе, хотя я, возможно, глубже погрузился в него, чем нужно.

-Стив

Ответ 6

Для тех, кто ищет, один ресурс, который мы использовали, чрезвычайно полезен, это бесплатное приложение от AT & T называется ARO.

Посмотрите: ARO

Это помогло мне раньше, и я не очень часто упоминал об этом, поэтому подумал, что я брошу его сюда для тех, кто ищет.

Ответ 7

"Я знаю, что могу посмотреть% s различные приложения через настройки, но это снова ненаучно, поскольку я получаю от этого также зависит от что происходит во всех других приложения".

Первое, что я хотел бы сделать, - это охота на приложение, уже имеющее известное, постоянное использование батареи, а затем вы можете просто использовать это как ссылку для определения использования вашего приложения.

Если такого приложения нет, вам нужно будет надеяться на ответ от кого-то еще... и если вы сделаете успешное создание такого приложения, я бы предложил продать ваше новое приложение "Использование батареи", чтобы другие программисты может использовать его.:)

Ответ 8

Я знаю, что этот вопрос старый, и он опаздывает, но для тех, кто приходит сюда в поисках решения, я предлагаю вам взглянуть на тест JouleUnit: http://dnlkntt.wordpress.com/2013/09/28/how-to-test-energy-consumption-on-android-devices/

Он интегрируется в eclipse и дает вам много подробностей о том, сколько аккумулятора потребляет ваше приложение.