Jake,
onUpdate is passed an explicit list of just the widget ids that need to
be updated. Supposedly, there could be widgets that belong to this
provider but don't need updating (e.g. on a scrolled-off home screen
portion).
Pushing a RemoveViews object to a paricular widget is done by calling:
manager.updateAppWidget(int widgetId, updateViews);
It's also possible to update all widgets that belong to a particular
widget provider, and this is the approach service-based widgets take,
supposedly to avoid paying service start-up costs for each widget id.
In this case, a single RemoteViews is pushed to all widgets with a
single call to:
manager.updateAppWidget(ComponentName thisWidget, updateViews);
-- Kostya
23.06.2010 18:57, Jake Colman пишет:
Kostya,
Thanks. That worked like a charm.
I noticed in sample AppWidget code that does not use a service, that it
iterates the appWidgetIds array so that it updates all instances of the
widget. However, in sample code that uses a Service, that iteration is
not done. Is that because it is not needed for some reason? How would
one update multiple instances using a service-based solution?
Thanks.
...Jake
"KV" == Kostya Vasilyev<kmans...@gmail.com> writes:
KV> Jake,
KV> The error is in the way your code instantiates ComponentName.
KV> Instead of:
KV> ComponentName thisWidget = new ComponentName(this,
ZMUpdateService.class);
KV> Do this:
KV> ComponentName thisWidget = new
KV> ComponentName(this,*ZmanMinderAppWidget*.class);
KV> The error message was trying to convey same thing...
KV> -- Kostya
KV> 23.06.2010 17:39, Jake Colman ?????:
>> I am trying to create a simple AppWidget using a service to initialize
>> the content in the onUpdate() method. The data is not being refreshed
>> and logcat shows me the following warning:
>>
>> AppWidgetService W updateAppWidgetProvider: provider doesn't exist:
>> ComponentInfo{com.jnc.zmanminder/com.jnc.zmanminder.ZMUpdateService}
>>
>> I must be missing something obvious but I cannot figure it out.
>>
>> My AppWidget class (edited for brevity) looks as follows:
>>
>> public class ZmanMinderAppWidget extends AppWidgetProvider {
>> public void onUpdate(Context context,
>> AppWidgetManager appWidgetManager, int[] appWidgetIds) {
>> context.startService(new Intent(context, ZMUpdateService.class));
>> }
>> }
>>
>> My Service class (edited for brevity) looks as follows:
>>
>> public class ZMUpdateService extends Service {
>> public void onStart(Intent intent, int startId) {
>> RemoteViews updateViews = buildUpdate(this);
>> ComponentName thisWidget = new ComponentName(this,
>> ZMUpdateService.class);
>> AppWidgetManager manager = AppWidgetManager.getInstance(this);
>> manager.updateAppWidget(thisWidget, updateViews);
>> }
>>
>> public IBinder onBind(Intent arg0) {
>> return null;
>> }
>>
>> public RemoteViews buildUpdate(Context context) {
>> Time time = new Time();
>> time.setToNow();
>> RemoteViews views = new
>> RemoteViews(context.getPackageName(),R.layout.widget);
>> views.setTextViewText(R.id.time, time.format("%I:%M%p"));
>> return views;
>> }
>> }
>>
>> The ZMUpdateService service is defined in my manifest file.
>>
>> Thanks for any help.
>>
>> ...Jake
>>
>>
>>
KV> --
KV> Kostya Vasilev -- WiFi Manager + pretty widget --
KV> http://kmansoft.wordpress.com
KV> --
KV> You received this message because you are subscribed to the Google
KV> Groups "Android Beginners" group.
KV> NEW! Try asking and tagging your question on Stack Overflow at
KV> http://stackoverflow.com/questions/tagged/android
KV> To unsubscribe from this group, send email to
KV> android-beginners+unsubscr...@googlegroups.com
KV> For more options, visit this group at
KV> http://groups.google.com/group/android-beginners?hl=en
--
Kostya Vasilev -- WiFi Manager + pretty widget -- http://kmansoft.wordpress.com
--
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
NEW! Try asking and tagging your question on Stack Overflow at
http://stackoverflow.com/questions/tagged/android
To unsubscribe from this group, send email to
android-beginners+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en