Как режим 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.