Android 6.0 Marshmallow вводит новую функцию экономии энергии , которая называется «Doze«. Устройство входит в Doze, когда пользователь не использует его в течение определенного периода времени, и экран устройства выключен. В этот период, система откладывает активности приложений (application activity) для экономии энергии. Система периодически пробуждает устройство на короткое время, это так называемое «окно ожидания обслуживания» ( idle maintenance window), чтобы выполнить синхронизацию приложений и другие ожидающие операции.
Если ваше приложение использует Google Cloud Messaging (GCM), Вам нужно будет принять во внимание следующие варианты поведения для пользователей, устройства которых находятся в режиме Doze.
В GCM есть два типа приоритета для сообщения — высокий приоритет и обычный приоритет. При использовании высокого приоритета, GCM попытается доставить сообщения немедленно, пробуждая устройства в Doze, при необходимости. В Android Marshmallow ничего не изменилось здесь.
Однако при использовании нормального приоритета (приоритет по умолчанию), существует ряд различий в поведении при нахождении устройства в Doze, включая:
- Наиболее важное изменение: сообщения будут выполняться в пакетном режиме для устройств в Doze. Когда устройство входит в окно ожидания обслуживания, пакеты сообщений будут получены.
- Удаляются сообщения, для которых time_to_live срок действия истекает в то время как устройство находится в Doze (включая TTL=0).
Несмотря на это, рекомендуется, в случае крайней необходимости, устанавливать обычный приоритет вашим уведомлениям, поскольку это сведет к минимуму расход батареи. Они по-прежнему будут синхронизированы во время Doze режима, как описано выше и, конечно, когда устройство выходит из Doze.
Высокий приоритет сообщения должен использоваться только в приложениях, которые должны генерировать немедленное оповещение конечного пользователя, например, сообщение приложения чата или входящий телефонный звонок.
Чтобы узнать больше о приоритетах сообщений Google Cloud Messaging, посетите сайт Google Developers site.