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).
T开发者_如何学JAVAhis 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.
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.
精彩评论