Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
352 views
in Technique[技术] by (71.8m points)

android - 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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...