Что означают CPU Total, CPU Foreground и Keep a wake?

Я следил за использованием батареи на своем устройстве Android (HTC One), в основном, чтобы узнать, смогу ли я разрядить ее в течение полного рабочего дня, и я наткнулся на сведения об использовании приложения в настройках питания.

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

Например, я активно использовал браузер Chrome в течение дня (устройство было включено примерно 14 часов, осталось около 30% заряда батареи) и заметил, что использование батареи приложением составляет 54%. Подробная информация об использовании (см. рисунок ниже) Всего ЦП было 29 м 31 с; Передний план процессора был 14 минут 43 секунды; и Не спать было 30s.

Скриншот
Скриншот (щелкните изображение, чтобы увеличить его)

Как эти цифры могут быть относительно низкими, если я знаю, что использовал Chrome более получаса и использовал его в качестве основного приложения гораздо дольше, чем 15 минут, что предполагает, что мои представления об общей загрузке ЦП и использовании переднего плана Я верю, что они есть.

По сути, что означают эти три числа с точки зрения использования приложения/батареи и что они мне говорят?

Ответы (2)

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

Таким образом, даже если Chrome был на экране в течение 30 минут, он не должен был использовать 30 минут процессорного времени. Если в это время он полностью статичен и вы не взаимодействуете с ним, возможно, он вообще не использовал процессорное время! Но с другой стороны, даже если бы он постоянно прокручивал страницу, он не использовал бы 30 минут процессорного времени: экран обновляется каждую 1/60 секунды, и каждый раз ему просто нужно работать достаточно долго, чтобы работать. каким должен быть следующий кадр.

ЦП на переднем плане

Имея это в виду, передний план ЦП — это время, в течение которого приложение работало на ЦП, в то время как активность приложения была на переднем плане. (Это может также включать, когда служба из приложения находилась на переднем плане: то есть отображалось «текущее» уведомление.) Это не очень полезная фигура сама по себе.

Всего ЦП

Я уверен, вы уже знаете, что приложения могут запускать службы и широковещательные приемники в фоновом режиме, а также выполнять действия на переднем плане. (Подробнее об этом см . в разделе В чем разница между службой и широковещательным приемником? ) Общее количество ЦП включает все это использование ЦП. Если это намного больше, чем CPU foreground , вы можете подозревать, что приложение выполняет много работы в фоновом режиме и, следовательно, может потреблять заряд батареи. Сколько «много» зависит от приложения. Приложение, которое продолжает работать для проверки какой-либо удаленной службы, будет использовать больше процессора в фоновом режиме, чем игра в судоку.

Бодрствовать

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

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

Если вы видите приложение, время бодрствования которого превышает несколько секунд, вам следует сообщить об ошибке разработчику приложения и рассмотреть возможность его удаления. 30 секунд в течение всего дня разумно для приложения, которое работает в фоновом режиме, но большинство приложений здесь показывают меньше секунды.

Ниже приводится объяснение цифр, о которых вы говорите.

  • Всего ЦП = общее время использования ЦП вашим приложением (всего ЦП = передний план ЦП + фон ЦП) . В вашем случае браузер Chrome использовал ЦП в течение общего времени 29 минут и 31 секунды.

  • Передний план ЦП = использование ЦП, когда приложение находится на переднем плане (видимо на экране и сфокусировано) . В вашем случае браузер Chrome использовал ЦП в течение 14 минут и 43 секунд, когда он был виден и сфокусирован на экране.

  • Не спать = время, в течение которого ваше приложение удерживало устройство от спящего режима (предотвращало выключение экрана телефона).

Кроме того, некоторые устройства также имеют следующий элемент.

  • Фон ЦП = использование ЦП, когда приложение работает в фоновом режиме (у него есть фоновый процесс или виджет и т. д.)

Итак, как вы можете видеть, фактическое время, в течение которого приложение использовало ваш процессор, меньше, чем время, в течение которого вы использовали приложение.