Главная » Разработка для Android » Установка повторяющейся Сигнализации

0

AlarmManager позволяет устанавливать повторяющуюся Сигнализацию, когда необходимо регулярно выполнять запланированные действия.

Повторяющаяся Сигнализация работает точно так же, как и одиночная, описанная ранее, но она продолжает срабатывать через определенные про- межутки времени, пока ее не отменят.

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

Чтобы  установить  повторяющуюся Сигнализацию, используйте метод setRepeating или setInexactRepeating из объекта AlarmManager, как показано в листинге  9.27. Оба метода поддерживают тип Сигнализации, начальный момент срабатывания и Ожидающее намерение, которое должно запускаться (как описывалось в предыдущем разделе).

Применяйте метод setRepeating в тех случаях, когда нужно контроли- ровать точный  интервал  между срабатываниями Сигнализации. Значение интервала, переданное в данный метод, дает возможность определить точные временные промежутки,  вплоть до миллисекунды.

Метод setInexactRepeating предоставляет мощный инструмент для умень- шения энергозатрат, связанных с выходом устройства из режима ожидания для выполнения запланированных действий. Вместо точного интервала этот метод принимает  одну из следующих констант, принадлежащих объ- екту AlarmManager:

INTERVAL_FIFTEEN_MINUTES;

INTERVAL_HALF_HOUR;

INTERVAL_HOUR;

INTERVAL_HALF_DAY;

INTERVAL_DAY.

Во время работы Android синхронизирует некоторые неточно повторяю- щиеся экземпляры Сигнализации и запускает их одновременно. Это помогает избежать ситуации, когда каждое приложение отдельно пытается вывести устройство из режима ожидания. Система «пробуждает» устройство со сходными,  но не пересекающимися интервалами, чтобы обновиться  или запросить  новые данные по Сети. Выполняя данную синхронизацию, она имеет возможность ограничить влияние регулярно происходящих событий на заряд батареи.

Листинг 9.27. Установка  повторяющейся Сигнализации

// Запускать Намерение в точности каждый час, если устройство выведено

// из  режима ожидания. alarms.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,

60*60*1000, 60*60*1000, elapsedIntent);

// Вывести устройство из спящего режима и запускать Сигнализацию

// каждый час alarms.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,

60*60*1000, AlarmManager.INTERVAL_DAY, elapsedIntent);

ВНИМАНИЕ

Воздействие регулярно повторяющихся событий на время работы батареи может быть весьма значительным. На практике старайтесь как можно больше ограничивать частоту срабатывания Сигнализации, выводите устройство из режима ожидания только в том случае, если это действительно необходимо, используйте неточно повторяющиеся экземпляры Сигнализации там, где это возможно.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии