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

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

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

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

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

13
задан August Lilleaas 7 August 2019 в 10:43
поделиться

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

23
ответ дан 1 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: