Режим ожидания - продолжают ли работать службы переднего плана? - PullRequest
0 голосов
/ 03 июля 2019

я так растерялся читая это и пытаясь выяснить, будут ли запущены службы переднего плана, когда устройство перейдет в режим глубокого сна. Может кто-то уточнить. Я хочу знать о зефире и выше, если службы переднего плана могут продолжать работать. Я всегда думал, что ВСЕ РЕЗЬБЫ приостановлены, даже услуги переднего плана, когда устройство спит.

Я вижу ограничения режима дозирования , но ничего о службах переднего плана. Я так растерялся, если мои сервисы пережили настройки безопасности в режиме ожидания.

Из того, что я могу сказать в ограничениях режима ожидания, просто сетевые вызовы остановлены. Но допустим, я выполнял долгую работу с основными потоками, это значит, что она может продолжать работать правильно? даже в режиме ожидания?

Ответы [ 2 ]

1 голос
/ 03 июля 2019

Службы Foreground не убивают в режиме ожидания, и это отличный способ переопределить режим ожидания. Убийство переднего плана службы сильно зависит от мобильной ОС. Как и на Гавайях, он убивает службы переднего плана после нехватки времени, и вы не сможете определить период. некоторые другие телефоны убивают самый старый сервис переднего плана, если он обнаруживает неожиданное потребление батареи. В прошлом году я провел около 6 месяцев, наблюдая за поведением телефонов, убивая службы переднего плана, когда активирован режим ожидания или нет. и я попробовал более одного решения переопределить режим дозирования при определении местоположения каждые 10 секунд, и лучшим из них является сервис переднего плана. Таким образом, вы столкнетесь с неожиданным поведением на некоторых телефонах, но это лучшее решение для режима ожидания и ожидания. Вы можете увидеть эту статью и вы также можете посмотреть этот учебник

1 голос
/ 03 июля 2019

Дозировочный режим предназначен для экономии заряда аккумулятора Вы должны поместить свое приложение в белый список для деактивации режима дозирования.

Источник: https://developer.android.com/training/monitoring-device-state/doze-standby

Поддержка других вариантов использования Почти все приложения должны поддерживать Doze, правильно управляя сетевым подключением, аварийными сигналами, заданиями и синхронизацией, а также используя FCM. высокоприоритетные сообщения. Для узкого набора вариантов использования это может не быть достаточным. Для таких случаев система предоставляет настраиваемый белый список приложений, которые частично освобождены от Doze и App Standby оптимизаций.

An app that is whitelisted can use the network and hold partial wake locks during Doze and App Standby. However, other restrictions

по-прежнему применяется к приложению из белого списка, так же как и к другим приложениям. За Например, задания и синхронизации приложения из белого списка откладываются (в API уровень 23 и ниже), и его обычные тревоги AlarmManager не срабатывают. Приложение может проверить, находится ли оно в настоящее время в белом списке исключений, Вызов isIgnoringBatteryOptimizations ().

А вот как вставить ваше приложение в белый список: 1. Шаг -> Добавьте это разрешение в ваш XML-файл.

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

2.Процедура игнорирования оптимизации батареи

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    Intent intent = new Intent();
    String packageName = getPackageName();
    PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
    if (!pm.isIgnoringBatteryOptimizations(packageName)) {
        intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
        intent.setData(Uri.parse("package:" + packageName));
        startActivity(intent);
    }
}
...