Я следил за использованием батареи на своем устройстве Android (HTC One), в основном, чтобы узнать, смогу ли я разрядить ее в течение полного рабочего дня, и я наткнулся на сведения об использовании приложения в настройках питания.
Я получаю процент заряда батареи, используемого приложением, общее количество ЦП, передний план ЦП и бодрствование. Я не уверен, что они означают, хотя могу предположить, но мне больше интересно, как они работают.
Например, я активно использовал браузер Chrome в течение дня (устройство было включено примерно 14 часов, осталось около 30% заряда батареи) и заметил, что использование батареи приложением составляет 54%. Подробная информация об использовании (см. рисунок ниже) Всего ЦП было 29 м 31 с; Передний план процессора был 14 минут 43 секунды; и Не спать было 30s.
Скриншот (щелкните изображение, чтобы увеличить его)
Как эти цифры могут быть относительно низкими, если я знаю, что использовал Chrome более получаса и использовал его в качестве основного приложения гораздо дольше, чем 15 минут, что предполагает, что мои представления об общей загрузке ЦП и использовании переднего плана Я верю, что они есть.
По сути, что означают эти три числа с точки зрения использования приложения/батареи и что они мне говорят?
Первое, что нужно помнить, это то, что когда приложение работает, оно на самом деле не выполняет вычисления в течение всего времени работы: большую часть времени оно бездействует, ожидая поступления данных по сети или пока вы просматриваете их. на экране. Только очень плохо написанные приложения и игры поддерживают работу ЦП все время, пока они работают: это очень быстро разряжает батарею и делает ваш телефон довольно теплым.
Таким образом, даже если Chrome был на экране в течение 30 минут, он не должен был использовать 30 минут процессорного времени. Если в это время он полностью статичен и вы не взаимодействуете с ним, возможно, он вообще не использовал процессорное время! Но с другой стороны, даже если бы он постоянно прокручивал страницу, он не использовал бы 30 минут процессорного времени: экран обновляется каждую 1/60 секунды, и каждый раз ему просто нужно работать достаточно долго, чтобы работать. каким должен быть следующий кадр.
Имея это в виду, передний план ЦП — это время, в течение которого приложение работало на ЦП, в то время как активность приложения была на переднем плане. (Это может также включать, когда служба из приложения находилась на переднем плане: то есть отображалось «текущее» уведомление.) Это не очень полезная фигура сама по себе.
Я уверен, вы уже знаете, что приложения могут запускать службы и широковещательные приемники в фоновом режиме, а также выполнять действия на переднем плане. (Подробнее об этом см . в разделе В чем разница между службой и широковещательным приемником? ) Общее количество ЦП включает все это использование ЦП. Если это намного больше, чем CPU foreground , вы можете подозревать, что приложение выполняет много работы в фоновом режиме и, следовательно, может потреблять заряд батареи. Сколько «много» зависит от приложения. Приложение, которое продолжает работать для проверки какой-либо удаленной службы, будет использовать больше процессора в фоновом режиме, чем игра в судоку.
Когда экран вашего телефона выключен, он начинает думать о том, чтобы вздремнуть. Он переходит в режим с низким энергопотреблением, называемый спящим , когда процессор почти полностью отключается до тех пор, пока он не понадобится. Поскольку это может прервать фоновую деятельность приложений, приложение может использовать блокировку пробуждения , чтобы устройство не переходило в спящий режим до тех пор, пока оно не будет завершено. (Существует также другой тип блокировки пробуждения, который останавливает автоматическое отключение экрана. Видеоплеер может использовать такую блокировку пробуждения.) Приложение также может использовать будильник , чтобы разбудить устройство для выполнения некоторых фоновых задач.
Поддержание бодрствования измеряет продолжительность времени, в течение которого это приложение использовало блокировку пробуждения или сигналы тревоги, чтобы поддерживать бодрствование устройства, когда в противном случае оно находилось бы в спящем режиме. В некотором смысле, это потенциально самый большой расход заряда батареи. Сон потребляет гораздо меньше энергии, чем бодрствование, поэтому, если приложение удерживает блокировку пробуждения в течение длительного времени, оно все это время поддерживает ваше устройство в режиме высокой мощности, даже если приложение не выполняет никакой полезной работы.
Если вы видите приложение, время бодрствования которого превышает несколько секунд, вам следует сообщить об ошибке разработчику приложения и рассмотреть возможность его удаления. 30 секунд в течение всего дня разумно для приложения, которое работает в фоновом режиме, но большинство приложений здесь показывают меньше секунды.
Ниже приводится объяснение цифр, о которых вы говорите.
Всего ЦП = общее время использования ЦП вашим приложением (всего ЦП = передний план ЦП + фон ЦП) . В вашем случае браузер Chrome использовал ЦП в течение общего времени 29 минут и 31 секунды.
Передний план ЦП = использование ЦП, когда приложение находится на переднем плане (видимо на экране и сфокусировано) . В вашем случае браузер Chrome использовал ЦП в течение 14 минут и 43 секунд, когда он был виден и сфокусирован на экране.
Не спать = время, в течение которого ваше приложение удерживало устройство от спящего режима (предотвращало выключение экрана телефона).
Кроме того, некоторые устройства также имеют следующий элемент.
Итак, как вы можете видеть, фактическое время, в течение которого приложение использовало ваш процессор, меньше, чем время, в течение которого вы использовали приложение.