Android: запуск фоновой задачи с помощью AlarmManager

Я пишу приложение, которое должно периодически проверять сервер на наличие новых сообщений и уведомлять пользователя. Я видел несколько примеров, используя AlarmManager, чтобы попасть в BroadcastReciever, который кажется правильным, но я не могу заставить его работать.

Может ли кто-нибудь показать мне пошаговое руководство для такого рода вещей (повторяющийся сигнал тревоги, который вызывает какой-то фоновый код, который вызывает уведомление)?

ТИА

Ответ 1

Вот один полный пример: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/

Образец, используемый в этом примере, и тот, который, как мне кажется, работает хорошо, заключается в использовании загрузочного приемника для настройки AlarmManager (и, конечно, также проверьте, чтобы начать опрос с вашего основного действия, когда ваше приложение установлено и система не загружается), и AlarmManager отправляет Intent для другого получателя: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealBootReceiver.java

И затем из AlarmReceiver запустите IntentService: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealAlarmReceiver.java

Из вашего IntentService затем сделайте свой сетевой вызов для опроса данных или всего, что вам нужно сделать. IntentService автоматически помещает вашу работу в фоновый поток, это очень удобно: http://android-in-practice.googlecode.com/svn/trunk/ch02/DealDroidWithService/src/com/manning/aip/dealdroid/DealService.java

Проверьте документы для этих классов тоже, много в там.

Предостережение с этим примером заключается в том, что он не имеет дело с разрывом блокировки следа (отличный код CommonsWare делает это, если вам это нужно), но он может дать вам еще несколько идей о том, как потенциально обратиться к "опросу с помощью AlarmManager и сервис".

UPDATE: код теперь находится здесь: https://github.com/charlieCollins/android-in-practice