Я пытаюсь создать функцию будильника. Он имеет обычное поведение сигнала тревоги по умолчанию - это означает, что пользователь может создать любое количество сигналов тревоги в любое время, настроенное на срабатывание в любое время. Прочитав документацию, я узнал:
Примечание. Ни setAndAllowWhileIdle(), ни setExactAndAllowWhileIdle()
не могут активировать сигналы тревоги чаще одного раза в девять минут, для каждого приложения.
Единственное возможное решение, которое казалось возможным, — это объединить WakeLock с AlarmManager. И это было следующим образом: первое намерение фиксировалось в спящем режиме, в борткасте. Затем я проверял погоду, есть ли еще будильники в течение этого 9-минутного периода сна, и если бы они были, я бы создавал WakeLock до тех пор, пока не будет выполнен последний будильник этого периода. WakeLock имел тип:
Код: Выделить всё
powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::AlarmWakeLock");
Я тестировал это на нескольких устройствах. физический/виртуальный с другим API, и проблема, похоже, сохраняется.
Последнее, о чем я думал, это ограничение заряда батареи, однако приложение часов по умолчанию на телефоне не было исключено из этих ограничений. ограничение и по-прежнему работает так, как предполагалось, поэтому я не думаю, что это тоже играет роль.
Почему это происходит? Я что-то упустил в коде? Спасибо, любая помощь будет очень признательна
Подробнее здесь: https://stackoverflow.com/questions/793 ... -is-asleep
Мобильная версия