Обновление виджетов Android каждые 1 минуту

Привет Я пишу Android-виджет; я хотел обновить его каждые 1-5 минут, чтобы контролировать данные из webservice, но я обнаружил, что Android: updatePeriodMillis не может быть меньше 30 минут... Как я могу получить этот результат с помощью виджета?

Спасибо и поздравления с.

Ответ 1

Зарегистрируйте службу AlarmManager для каждого 1-минутного вызова.

final Intent intent = new Intent(context, UpdateService.class);
final PendingIntent pending = PendingIntent.getService(context, 0, intent, 0);
final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pending);
long interval = 1000*60;
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending);

Однако перенаправление обновлений виджетам приложений является дорогостоящей операцией. Обновление каждые 1 мин приведет к тому, что ваш "обновить виджет приложения" будет находиться в памяти, которая будет работать все время, и это также сильно поедает батарею.

Ответ 2

Используйте Handler для sendMessageDelayed(..) сообщение или postDelayed(..) a Runner.

new Handler().postDelayed( new Runnable() {
    public void run() { ... },
    60000 /* one minute */
);