Отложенное выполнение и AlarmManager

Android #Android

Чтобы служба реально использовалась в фоновом режиме, нам понадобится какой-то механизм организации операций при отсутствии работающих актив- ностей — например, таймер, который срабатывает каждые пять минут, или что- нибудь в этом роде.

Это можно сделать при помощи Handler, вызовами методов Handler.send- MessageDelayed(...) или Handler.postDelayed(...). Впрочем, такое решение с боль- шой вероятностью перестанет работать, если пользователь уйдет со всех актив- ностей. Процесс закроется, и вместе с ним прекратят существование сообщения Handler.

По этой причине вместо Handler мы будем использовать AlarmManager — систем- ную службу, которая может отправлять интенты за вас.

Как сообщить AlarmManager, какие интенты нужно отправить? При помощи объ- екта PendingIntent. По сути, в объекте PendingIntent упаковывается пожелание: «Я хочу запустить PollService». Затем это пожелание отправляется другим ком- понентам системы, таким как AlarmManager.

Включите в PollService новый метод с именем setServiceAlarm(Context,boole an), который включает и отключает сигнал за вас. Метод будет объявлен статиче- ским; это делается для того, чтобы код сигнала размещался рядом с другим кодом PollService, с которым он связан, но мог вызываться и другими компонентами. Обычно включение и отключение должно осуществляться из интерфейсного кода фрагмента или из другого контроллера.

Оценка статьи 0

Комментарии

Пока комментариев нет.