Часто обновляемые виджеты (чаще, чем позволяет updatePeriodMillis)

Мне нужен виджет, показывающий обратный отсчет для инициированного пользователем отслеживания отправления автобуса. Я хочу обновлять виджет каждую минуту или около того, с момента, когда пользователь запускает отслеживание, до момента, когда автобус отправляется (т.е. время истекает).

Этот виджет нужно обновлять чаще, чем позволяет updatePeriodMillis, что происходит каждые 30 минут. Я рассчитываю примерно раз в минуту.

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

Как мне запустить таймер? Как я могу получить доступ к экземпляру виджета из моих приложений во время выполнения? И так далее.

Ответы

Ответ 1

Я зарегистрировал бы будильник, чтобы начать мой сервис каждые 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);

AlarmManager.ELAPSED_REALTIME не будет работать с устройством, если он не будет спать от батареи.