Как использовать AlarmManager, пока устройство спит?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как использовать AlarmManager, пока устройство спит?

Сообщение Anonymous »

Я видел, что у людей возникает много подобных вопросов по этой теме, однако я до сих пор не нашел решения, которое помогло бы мне. И вот я здесь...
Я пытаюсь создать функцию будильника. Он имеет обычное поведение сигнала тревоги по умолчанию - это означает, что пользователь может создать любое количество сигналов тревоги в любое время, настроенное на срабатывание в любое время. Прочитав документацию, я узнал:

Примечание. Ни setAndAllowWhileIdle(), ни setExactAndAllowWhileIdle()
не могут активировать сигналы тревоги чаще одного раза в девять минут, для каждого приложения.

Единственное возможное решение, которое казалось возможным, — это объединить WakeLock с AlarmManager. И это было следующим образом: первое намерение фиксировалось в спящем режиме, в борткасте. Затем я проверял погоду, есть ли еще будильники в течение этого 9-минутного периода сна, и если бы они были, я бы создавал WakeLock до тех пор, пока не будет выполнен последний будильник этого периода. WakeLock имел тип:

Код: Выделить всё

powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::AlarmWakeLock");
Однако, хотя в журналах по какой-то причине блокировка отображалась как полученная, WakeLock не вступал в силу и не разбудил устройство, чтобы другие сигналы тревоги могли запустить трансляцию. Почему это происходит? Я добавил необходимые разрешения для этого действия — android.permission.WAKE_LOCK, android.permission.SYSTEM_ALERT_WINDOW, android.permission.SCHEDULE_EXACT_ALARM. И PendingIntent, который должен запускать этот сигнал тревоги, имеет тип: PendingIntent.FLAG_UPDATE_CURRENT и всегда имеет один и тот же идентификатор с прикрепленными уникальными дополнительными функциями.
Я тестировал это на нескольких устройствах. физический/виртуальный с другим API, и проблема, похоже, сохраняется.
Последнее, о чем я думал, это ограничение заряда батареи, однако приложение часов по умолчанию на телефоне не было исключено из этих ограничений. ограничение и по-прежнему работает так, как предполагалось, поэтому я не думаю, что это тоже играет роль.
Почему это происходит? Я что-то упустил в коде? Спасибо, любая помощь будет очень признательна

Подробнее здесь: https://stackoverflow.com/questions/793 ... -is-asleep
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»