Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 843
August Lilleaas Avatar asked Jul 22 '10 14:07

August Lilleaas


People also ask

How to update widget data android?

Full update: Call AppWidgetManager. updateAppWidget(int, android. widget. RemoteViews) to fully update the widget.

What is the purpose of widgets in Android?

Widgets can be added to your phone's home as a quick way to access certain information from apps without having to open the app itself. One example is the Calendar widget, which provides a quick view of the upcoming events in your calendar without having to open the Calendar application.

What are the different types of widgets in Android?

There are, in general, four types of widgets: information widgets, collection widgets, control widgets, and hybrid widgets.

What are widgets available in Android explain any two widgets with example?

There are given a lot of android widgets with simplified examples such as Button, EditText, AutoCompleteTextView, ToggleButton, DatePicker, TimePicker, ProgressBar etc. Let's learn how to perform event handling on button click. Displays information for the short duration of time.


1 Answers

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.

like image 166
Fedor Avatar answered Oct 05 '22 07:10

Fedor