Часто обновляемые виджеты (чаще, чем позволяет 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 не будет работать с устройством, если он не будет спать от батареи.