Обновление виджета только когда устройство включено И виджет виден на главном экране

Насколько я понял официальную документацию по виджетам, я немного запутался.

"Стандартным" способом было бы определить a BroadcastReceiver и задайте частоту обновления в миллисекундах - таким образом обеспечивается минимальный интервал обновления 30 минут для экономии заряда батареи. Звучит разумно.

«Ручной» способ, который я нашел при чтении документации Google, - это самостоятельно обрабатывать обновление виджетов с помощью AlarmManager . Использование этого метода возможно с более высокими интервалами обновления (хотя, конечно, не рекомендуется!), И можно будет использовать типы сигналов тревоги, которые не выводят устройство из спящего режима. (Я предполагаю, что намерение отправляется в любое время после того, как событие должно сработать, как только устройство просыпается по какой-либо другой причине - это правильно?)

Теперь меня смущает следующая мысль: виджеты находятся на домашних экранах . По крайней мере, это самое обычное место, где их можно найти. Android предлагает множество страниц (по умолчанию 5 или 7) на домашних экранах, поэтому виджет, даже если он помещен туда пользователем, может быть даже не виден!

Пока информация, отображаемая виджетом, является просто очень простой текст (например, текущее время!), который может быть вычислен или выведен без какой-либо задержки, когда это необходимо, Мне не нужна частота обновления или даже намерения пробуждения устройства, когда они не видны!
Но , пока устройство включено, или более конкретно: пока экран включен И виджет виден , мне нужно много событий обновления! Как часы, отображающие секунды, нуждаются в намерении перерисовывать каждую секунду!

Как это можно реализовать? Как реализованы "Аналоговые часы Android"? Ни метод A ("стандартный"), ни B ("ручной") не дают моей высокой частоты обновления, но только пока устройство включено и виджет виден.

Кто-нибудь может мне подсказать ???

7
задан Zordid 22 February 2011 в 10:11
поделиться