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

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

благодарности и поздравления c.

2 ответов


зарегистрируйте службу 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 мин заставит ваш код "обновить виджет приложения" быть резидентом в памяти, которая продолжает работать все время, и это также съест батарею довольно значительно.


использовать Handler to sendMessageDelayed(..) сообщение или postDelayed(..) a Runner.

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