Android: пользовательский виджет часов Обходной путь? - PullRequest
2 голосов
/ 21 декабря 2009

Я был заинтересован в разработке виджета часов для домашнего экрана, и после прочтения Обучающего руководства по виджетам для домашнего экрана мне стало интересно, существует ли уже существующий Service, который я мог бы использовать для обновления текущего времени, а заново изобретать колесо?

Я загружаю приложение Ретро-часы на свой телефон Android и заметил, что при нажатии на него всплывают настройки будильника, но со стандартным виджетом Google Аналоговые часы , по клику ничего не делает.

Это потому, что в виджете Retro Clock реализована служба будильника? Если так, как я могу ссылаться на этот сервис? Или у меня все это неправильно и неправильно понято?

Любая помощь приветствуется.

EDIT:

Я полагаю, что внедрение службы для обновления часов может сильно истощить срок службы батареи, какие-либо идеи обойти или помочь пролить свет на любые проблемы с производительностью при использовании Service?

Ответы [ 3 ]

5 голосов
/ 21 декабря 2009

Мое предположение: виджет «Ретро-часы» реагирует на прикосновения и запускает функцию, которая запускает страницу настройки будильника. Вы можете заглянуть в исходный код Android, чтобы выяснить, что это будет за намерение. Чтобы увидеть, как подключить ваш виджет к действительному замыслу, вы можете посмотреть пример кода в руководстве разработчика Android .

<Ч />

Для виджета часов кажется, что у вас есть два требования. Он должен обновляться не реже одного раза в минуту, но не должен обновляться, пока устройство спит. Вот цитата, которую я нашел:

Примечание. Если устройство находится в спящем режиме, когда наступает время обновления (как определено updatePeriodMillis), то устройство активируется, чтобы выполнить обновление. Если вы обновляете не чаще одного раза в час, это, вероятно, не вызовет значительных проблем в течение срока службы батареи. Если, однако, вам нужно обновлять чаще и / или вам не нужно обновлять, когда устройство спит, вы можете вместо этого выполнить обновления на основе сигнала тревоги, который не разбудит устройство. Для выполнения Итак, установите тревогу с намерением, которое получает ваш AppWidgetProvider, используя AlarmManager. Установите тип тревоги ELAPSED_REALTIME или RTC, который будет доставлять тревогу только тогда, когда устройство не спит. Затем установите updatePeriodMillis на ноль («0»).

(из руководства App Widgets )

<Ч />

Кстати, у меня появился шанс поиграть с HTC Hero. Я заметил, что, когда вы будите Героя из сна, стрелки его виджета аналоговых часов начинаются с 12. Затем он раскручивает стрелки, чтобы добраться до нужного времени. Вероятно, это потому, что они не обновляют его, когда телефон спит.

3 голосов
/ 05 июня 2010

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

2 голосов
/ 21 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...