Я создаю виджет часов с Android. Я проверил часы, и логика кажется прекрасной, но мне нужно обновить ее каждую минуту.Использование TimerTask и Timer с Widget AppWidgetProvider
Я установил updatePeriodMillis на 60000 в свой XML, но Android ограничивает это до 30 минут, поэтому он обновляется каждые полчаса.
Я провел некоторое исследование, и служба или AlarmManager, возможно, сработали, за исключением метода, который я вызываю, требуется AppWidgetManager и AppWidgetId, которые передаются ему с помощью метода onUpdate().
Я попробовал два (подобные) методы, чтобы получить рабочую минуту обновления:
static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager,
final int appWidgetId) {
final Handler mHandler = new Handler();
TimerTask minuteTask = new TimerTask() {
@Override
public void run() {
mHandler.post(new Runnable() {
@Override
public void run() {
//Do Stuff
});
}
};
timer = new Timer();
// schedule the task to run starting now and then every minute
timer.scheduleAtFixedRate(minuteTask, 0l, 1000 * 60);
}
и:
static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager,
final int appWidgetId) {
TimerTask minuteTask = new TimerTask() {
@Override
public void run() {
//Do stuff
}
};
timer = new Timer();
// schedule the task to run starting now and then every minute
timer.scheduleAtFixedRate(minuteTask, 0l, 1000 * 60);
}
Любая помощь очень высоко ценится.
Спасибо.
EDIT: В то время, когда мне приходилось отлаживать и делать это сообщение, я в конечном итоге оставил приложение установленным на полчаса. Казалось бы, таймер запустился через полчаса, когда сначала был вызван onUpdate(), но он по-прежнему не работает в течение первых 30 минут.
спасибо за подсказку. Теперь я создал метод, который добавляет все идентификаторы виджетов приложений в общие настройки, и я установил повторяющийся сигнал тревоги в свой метод onEnabled. Затем у меня есть служба Intent, которая извлекает идентификаторы из общих настроек, а AppWidgetManager с getInstance() выполняет вызов updateAppWidget (это appWidgetManager, id), но приложение по-прежнему не обновляется. Я думаю, что это может быть потому, что мое обслуживание не начинается правильно. Есть ли способ проверить, работает ли моя служба? – thebillington