Как режим 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
или не сообщая значение с зарегистрированным слушателем.
ОБНОВЛЕНИЕ:
Для моих проблем и после отличного ответа от Моралеса, я решил это через каждый раз, когда мне нужно зарегистрировать слушателя, я получаю блокировку следа, и я освобождаю его после того, как выборка выполнена. Таким образом, события согласуются со случаями, которые я прошу, и не удерживайте датчик активным.