Помимо вызова активности конфигурирования, Android также инициирует метод обратного вызова onEnabled класса AppWidgetProvider. Давайте кратко ознакомимся с методами обратного вызова класса AppWidgetProvider на примере оболочки — нашего класса BdayWidgetProvider . Мы исследуем полный листинг этого файла позднее, .
Метод обратного вызова onEnabled указывает, что на домашнем экране есть, по крайней мере, один экземпляр запущенного и работающего виджета. Это значит, что пользователь должен к моменту его вызова минимум однажды сбросить данный виджет на домашний экран. В этом вызове вы должны включить получение сообщений для данного компонента широковещательного приемника (вы у это в ). Базовый класс AppWidgetProvider поддерживает функциональность включения и отключения приема таких сообщений.
Метод onDeleted вызывается, когда пользователь перетаскивает представление экземпляра виджета в корзину. Здесь вы должны удалить любые постоянно хранимые значения, которые относятся к экземпляру виджета.
Метод обратного вызова onDisabled инициируется после удаления с домашнего экрана последнего экземпляра виджета. Это происходит, когда пользователь перетаскивает в корзину последний экземпляр виджета. Вы должны использовать этот метод для отмены регистрации на получение любых широковещательных сообщений, адресованных этому компоненту (вы у это в ).
Метод обратного вызова onUpdate запускается при каждом срабатывании таймера, указанного . Этот метод также вызывается при создании самого первого экземпляра виджета, если нет активности конфигурирования. Если же такая активность имеется, этот метод не вызывается при создании экземпляра виджета. Он будет вызван впоследствии по истечении времени таймера в соответствии с заданной частотой.
Фаза вызова onUpdate
Как только экземпляр виджета появляется на домашнем экране, следующим важным событием является истечение времени таймера. Android вызовет метод onUpdate в ответ на срабатывание таймера. Поскольку метод onUpdate вызывается через широковещательный приемник, соответствующий процесс Java будет загружен и останется активным до конца этого вызова. Как только вызов вернет управление, процесс будет готов к завершению.
В случае, когда ответ требует более секунд времени на работу, рекомендуется использовать такой механизм, как длительно выполняющийся широковещательный приемник, описанный в Если есть все необходимые данные для обновления виджета в методе onUpdate, можно обратиться к AppWidgetManager для отрисовки удаленного представления. Если вместо этого вы решите запустить длительно выполняющуюся службу для осуществления обновлений, вам придется передавать идентификатор виджета в виде дополнительных данных намерения, которое запускает службу.
Это говорит о том, что класс AppWidgetProvider лишен состояния и может даже не поддерживать статические переменные между обращениями. Дело в том, что процесс Java, содержащий этот класс широковещательного приемника, может быть удален и воссоздан между двумя вызовами, в результате чего произойдет повторная инициализация статических переменных.
Опубликовал Kest
February 14 2015 13:53:56 ·
0 Комментариев ·
2254 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.