Поиск…


замечания

Режим 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

Исключение приложения из режима доз

  1. Настройки открытого телефона
  2. открытая батарея
  3. откройте меню и выберите «оптимизация батареи»,
  4. в раскрывающемся меню выберите «все приложения»,
  5. выберите приложение, в которое хотите добавить белый список
  6. выберите "не оптимизировать"

Теперь это приложение будет отображаться в не оптимизированных приложениях.

Приложение может проверить, 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
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow