Насколько быстро разряжаются push-уведомления на Android 4.1?

У меня S3 на 4.1, и у меня много приложений с push-уведомлениями. Это удобно, но я хочу знать, настроен ли 4.1 для эффективного использования push-уведомлений в отношении разрядки батареи. Будет ли Android 4.3+ потреблять меньше энергии для push-уведомлений?

У меня есть push для 4 приложений. После добавления еще одного толчка прошлой ночью моя батарея теряет 20% за час. Я начинаю задаваться вопросом, сколько батареи действительно разряжают push-приложения. Я заметил, что некоторые приложения Twitter заявляют, что, хотя они и используют push, они используют свой собственный сервер, который, по-видимому, использует меньше нашей батареи.

Ответы (2)

Push-уведомления призваны стать решением для приложений, разряжающих батарею, которые постоянно отслеживают данные, которые изменились локально или на сервере. Из-за этого они очень экономичны. Мой телефон обычно получает 20 уведомлений за несколько часов при общем использовании батареи менее 1%.

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

введите описание изображения здесь

Я хочу знать, настроен ли 4.1 для эффективного использования push-уведомлений в отношении разрядки батареи.

Короткий ответ — да, но это звучит как ошибочный вопрос. Push-уведомления существуют намного дольше, чем 4.1, и, насколько мне известно, нет никаких серьезных «эффективностей», которые были добавлены в ОС Android после 4.1 для улучшения обработки push-уведомлений.

Чтобы push-уведомления работали, нужно 4 компонента:

(1) Сервер приложений, который обрабатывает данные для вас в облаке и хочет сообщить вам о событии (например, серверы Twitter/Facebook).

(2) Сервер push-уведомлений, который может получать запросы от (1) , выяснять, для кого он предназначен, и отправлять push-уведомления нужной комбинации пользователя/устройства (например, сервер Google Cloud Messaging).

(3) Аналог приложения/службы Android, который всегда работает в фоновом режиме и имеет постоянное (всегда включенное) соединение с (2) , поэтому он может получить толчок, выяснить, для какого приложения он предназначен, разбудить это приложение и отправьте ему небольшие push-данные (например, собственное приложение Google Play Store)

(4) Android-приложение, которое может получать эти локальные данные из (3) и выяснять, как лучше всего информировать пользователя об этом push-уведомлении (обычно путем размещения индикатора уведомления в строке состояния) (например, приложение Twitter для Android). Это то, что конечный пользователь считает push-уведомлением. Однако не все push-уведомления должны отображаться в строке состояния/уведомлений, они отправляются автоматически (3) , и только (4) определяет, следует ли показывать уведомление пользователю.

В идеале, даже если включена настройка push-уведомлений, (4) не бодрствует. Он будет разбужен (3) , когда (3) получит толчок от (2) . Google предоставляет платформу GCM, которая обеспечивает (2) и (3) . Таким образом, если ваши приложения используют GCM (или другие эквивалентные службы, такие как UrbanAirship, Xtify и т. д.), любая чрезмерная разрядка батареи, которую вы можете заметить, является ошибкой (1) или (4), обе из которых являются ошибкой разработчика приложения.

(1) и (2) могут быть объединены, как и (3) и (4). Поэтому, если приложения, которые вы устанавливаете, имеют собственную службу push-уведомлений, это все еще проблема с их кодом, а не с вашим устройством или ОС.

Дополнительное чтение: Архитектура Google Cloud Messaging