Android: ACTION_TIME_TICK в AppWidget - PullRequest
2 голосов
/ 16 марта 2012

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

Есть ли обходной путь для ACTION_TIME_TICK или как лучше всего обновлять каждую минуту синхронно с системными часами?с минимальным разрядом батареи?

Ответы [ 2 ]

4 голосов
/ 16 марта 2012

Есть ли обходной путь для ACTION_TIME_TICK

ACTION_TIME_TICK может быть зарегистрирован только через registerReceiver() из чего-то, что уже запущено.В вашем случае это «что-то» должно быть постоянно работающим Service, и это, как правило, против паттерна.Пользователи и ОС могут при желании избавиться от этой службы.

Я бы нашел способ слегка ослабить требование "синхронно с системными часами", а затем использовать AlarmManager.В конце концов, Android не является ОСРВ, поэтому ничто не будет «синхронизировано с системными часами» в любом гарантированном смысле.

Используя AlarmManager, вы должны указать первый сигнал тревоги длябыть "вершиной" следующей минуты с периодом 60 секунд и setRepeating().Или вы должны set() запланировать на «вершину» следующей минуты, а затем запланировать следующий с помощью set() как часть своей собственной обработки, если вы считаете, что вы можете вручную исправить дрейф таким образом.

0 голосов
/ 16 марта 2012

если вам просто нужно отобразить его при запуске приложения, просто обновите его с помощью asyncTask, но если вам нужно его значение даже в фоновом режиме, то использование сервиса будет лучшей идеей

...