Android: приостановить обновления виджетов с помощью Alarmmanager - PullRequest
1 голос
/ 16 ноября 2011

Я только что прошел этот урок: update-widget-in-onreceive-method (кстати: вы бы предложили какие-либо улучшения этого кода?)

В конце кто-то упоминает

Мне просто интересно, есть ли способ расширить это так, чтобы, когда устройство спит (экран выключен), обновления прекращались.Затем, когда устройство проснется, обновления возобновятся.

Итак, мой вопрос: есть ли способ сделать это?как?или аварийный менеджер автоматически останавливается?- Я так не думаю.

1 Ответ

2 голосов
/ 16 ноября 2011

Вы можете указать, будет ли устройство активироваться при планировании AlarmManager .

Цитата из документации:

ELAPSED_REALTIME
Время будильника в SystemClock.elapsedRealtime () (время с момента загрузки, включая спящий режим). Этот сигнал тревоги не будит устройство ;если он гаснет, когда устройство спит, он не будет доставлен до следующего пробуждения устройства.

ELAPSED_REALTIME_WAKEUP
Время будильника в SystemClock.elapsedRealtime () (время после загрузки, включая спящий режим), , который разбудит устройство, когда оно выключится .

То же самое касается AlarmManager.RTC и AlarmManager.RTC_WAKEUP

Так что вы, вероятно, хотите один издва AlarmManager.RTC или AlarmManager.ELAPSED_REALTIME.Они продолжаются, когда устройство находится в активном состоянии, и останавливаются, когда устройство находится в режиме ожидания.Если этот сигнал тревоги срабатывает, когда устройство спит, он будет доставлен, когда пользователь снова включит устройство, именно то, что вы хотите.И нет, запланированные тревоги AlarmManagers вообще не отменяются автоматически.

Часть, упомянутая здесь, может быть найдена в этой части руководства , в частности в этой строке:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 20*1000, pendingIntent);
...