Одним из изменений в Android 7/Nougat стало то, что Doze стал «более агрессивным». В Android 6/Marshmallow режим сна срабатывал, когда экран был выключен, устройство работало от батареи и было неподвижно.
(Это задокументировано в разделе Оптимизация для Doze и ожидания приложения)
Теперь в Android 7 условия просто выключены и работают от батареи.
(Это задокументировано в изменениях поведения Android 7.0)
Приложения могут быть внесены в белый список, чтобы на них не распространялись ограничения, если они нарушают их основные функциональные возможности. В вашем случае они делают так, как GPS-трекер должен записывать координаты в режиме реального времени.
Существует список приемлемых вариантов использования белого списка< /а>
Это включает:
Приложение для автоматизации задач | Основная функция приложения — планирование автоматических действий, таких как обмен мгновенными сообщениями, голосовые вызовы, управление новыми фотографиями или действия с определением местоположения.
Пользователи могут самостоятельно внести приложение в белый список в настройках устройства, либо приложение может запросить внесение в белый список и утвердить или отклонить его пользователем.
Это описано в Поддержка других вариантов использования
Цитата:
Приложение может активировать намерение ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS, чтобы направить пользователя непосредственно к оптимизации батареи, где он может добавить приложение.
Приложение с разрешением REQUEST_IGNORE_BATTERY_OPTIMIZATIONS может вызвать системный диалог, позволяющий пользователю напрямую добавить приложение в белый список, не переходя к настройкам. Приложение запускает намерение ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, чтобы вызвать диалог.
При необходимости пользователь может вручную удалить приложения из белого списка.
Последний пункт, конечно, важен, но, к счастью, статус белого списка можно проверить программно:
Приложение может проверить, находится ли оно в настоящее время в белом списке исключений, вызвав isIgnoringBatteryOptimizations().
Таким образом, работа с режимом Doze — это, по крайней мере, одна вещь, которую нужно изучить.
Другая проблема заключается в том, чтобы служба работала в целом. Но служба, которую система убивает, может привести к более случайным временным интервалам. Конечно, есть классические вещи, такие как использование START_STICKY или работает как служба переднего плана.
person
Markus Kauppinen
schedule
30.03.2017