August Lilleaas
August Lilleaas

Reputation: 54593

Frequently updating widgets (more frequently than what updatePeriodMillis allows)

I want a widget showing a countdown for a user initiated tracking of a bus departure. I want to update the widget every minute or so, from when the user initiates the tracking to when the bus has departed (i.e. the time runs out).

This widget needs to be updated more frequently than what updatePeriodMillis allows, which is every 30 minutes. I reckon about once a minute.

Being new to Android programming, I can think of a few ways to do this, but I would probably end up doing it in a way that consumes way too much battery etc, so I'm looking for some insights from more experienced Android developers.

How do I start the timer? How can I access the widget instance from my applications run-time? And so on.

Upvotes: 17

Views: 12698

Answers (1)

Fedor
Fedor

Reputation: 43412

I would register an alarm to start my service every 1 minute and the service would update the widget UI

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 will not wakr the device if it's sleeping to battery life should not be affected.

Upvotes: 29

Related Questions