Android
Режим дозировки
Поиск…
замечания
Режим Doze - это набор изменений и правил, которые заставляют ваш телефон спать при простоях.
На Android 6.0 Marshmallow: режим Doz активируется через некоторое время, когда экран выключен, устройство остается неподвижным и работает от аккумулятора. Как вы можете видеть на диаграмме выше, когда активируется Doze Mode, устройство не получает никаких вакелов, сетевого доступа, заданий / синхронизаций, сигналов тревоги, сканирования GPS / Wi-Fi.
На Android 7.0 Nougat: представьте, если ваш телефон находится в кармане (экран выключен, он работает от батареи, но он не является стационарным), вы также можете получить функции режима Doz Mode, верно? Вот почему Google объявил о расширенном режиме «Доза»: он работает, когда экран выключен, но не стационарный. Как вы можете видеть на этой диаграмме, отключены только сетевой доступ и задания / синхронизация. Обратите внимание, что Extended Doze не заменяет первый режим Doze. Они работают вместе, в зависимости от состояния телефона (стационарного или нет). Вот отличия: Разработчики должны знать, что:
- Doze может поддерживать временный wakelock и сетевой доступ для сообщений с высоким приоритетом GCM (Google Cloud Messaging) (для случаев, когда пользователю требуется немедленное уведомление);
- Работа на переднем плане (например, воспроизведение музыки) будет продолжать работать.
Вы можете найти более подробную информацию здесь: https://developer.android.com/training/monitoring-device-state/doze-standby.html
Исключение приложения из режима доз
- Настройки открытого телефона
- открытая батарея
- откройте меню и выберите «оптимизация батареи»,
- в раскрывающемся меню выберите «все приложения»,
- выберите приложение, в которое хотите добавить белый список
- выберите "не оптимизировать"
Теперь это приложение будет отображаться в не оптимизированных приложениях.
Приложение может проверить, isIgnoringBatteryOptimizations()
ли оно в белый список, вызывая isIgnoringBatteryOptimizations()
Белый список приложений для Android
Белый список не отключает режим доз для вашего приложения, но вы можете сделать это, используя сетевые блокировки и блокировки ожидания.
Белым списком приложений для Android можно сделать следующее:
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(!isIgnoringBatteryOptimizations){
Intent intent = new Intent();
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);
}
Результат запуска вышеуказанного действия может быть подтвержден следующим кодом:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(isIgnoringBatteryOptimizations){
// Ignoring battery optimization
}else{
// Not ignoring battery optimization
}
}
}