Как режим Doze влияет на зарегистрированных слушателей (особенно для датчиков)
Как режим Doze влияет на зарегистрированных слушателей?
Также я хотел бы знать, как это влияет на прослушивателей датчиков, если это возможно.
Моя проблема в том, что у меня есть WatchFaceService
с разрешением блокировки после пробуждения в манифесте. Функция watchFace выполняет onTimeTick
каждую минуту. Много раз это происходит, когда устройство Dozed. В этот момент он регистрирует слушателя для HR для сбора 10 значений. В соответствии с моими наблюдениями режим доза срабатывает после регистрации слушателя, но датчик остается активным.
Например, датчик HR остается включенным.
Это нормально и почему? Вот мои наблюдения
Приемник с периодом выборки 0 микросекунд:
sensorManager.registerListener(averagingSensorEventListener, sensor, averageSamplingPeriodUs, averageMaxReportLatencyUs);
Logs:
06-12 17:35:00.308 724-724/? D/android.sensor.heart_rate: Starting average calculation
06-12 17:36:01.065 724-724/? D/android.sensor.heart_rate: Event value 75.0 accepted
06-12 17:36:01.166 724-724/? D/android.sensor.heart_rate: Event value 75.0 accepted
06-12 17:36:20.471 724-724/? D/android.sensor.heart_rate: Event value 71.0 accepted
06-12 17:37:01.066 724-724/? D/android.sensor.heart_rate: Event value 72.0 accepted
06-12 17:38:01.067 724-724/? D/android.sensor.heart_rate: Event value 73.0 accepted
06-12 17:39:00.072 724-724/? D/android.sensor.heart_rate: Event value 81.0 accepted
06-12 17:39:28.135 724-724/? D/android.sensor.heart_rate: Event value 81.0 accepted
06-12 17:39:28.276 724-724/? D/android.sensor.heart_rate: Event value 80.0 accepted
06-12 17:39:29.244 724-724/? D/android.sensor.heart_rate: Event value 77.0 accepted
06-12 17:39:30.110 724-724/? D/android.sensor.heart_rate: Event value 75.0 accepted
06-12 17:39:31.172 724-724/? D/android.sensor.heart_rate: Event value 73.0 accepted
06-12 17:39:31.173 724-724/? D/android.sensor.heart_rate: Stopped listening
06-12 17:39:31.180 724-724/? D/android.sensor.heart_rate: Average calculated: 76.0
06-12 17:39:31.180 724-724/? D/android.sensor.heart_rate: Event value 76.0 accepted
Требуется больше 4 минут, и в эти минуты датчик HR активен (зеленый свет), не запуская обратный вызов onSensorChanged
или не сообщая значение с зарегистрированным слушателем.
ОБНОВЛЕНИЕ:
Для моих проблем и после отличного ответа от Моралеса, я решил это через каждый раз, когда мне нужно зарегистрировать слушателя, я получаю блокировку следа, и я освобождаю его после того, как выборка выполнена. Таким образом, события согласуются со случаями, которые я прошу, и не удерживайте датчик активным.
Ответы
Ответ 1
Датчики
В документации говорится, что существует несколько типов датчиков каждый датчик имеет режим отчетов (непрерывный, сменой, однократным и специальным), и каждый датчик классифицируется по type:
- Датчик пробуждения: убедитесь, что их данные доставляются независимо от состояния SoC.
- Датчик без пробуждения: не препятствуйте тому, чтобы SoC перешел в режим приостановки и не разбудил SoC, чтобы сообщить данные.
Документация о дозах не указывает никакой информации о конкретных датчиках, за исключением значительного датчика движения, который требуется для настройки режима дозировки.
Чтобы узнать индивидуальные описания типов типов для получения подробной информации о том, когда генерируются события, вы можете проверить документацию.
Ограничения
В режиме "Доза" есть несколько ограничений :
Доза может влиять на приложения по-разному, в зависимости от возможностей, которые они предлагают, и от услуг, которые они используют. Многие приложения работают нормально в циклах Doze без изменений. В некоторых случаях вы должны оптимизировать способ управления сетью, сигналами тревоги, заданиями и синхронизацией. Приложения должны иметь возможность эффективно управлять действиями во время каждого окна обслуживания.
Из Оптимизация для Doze и App Standby.