Kostya,

That makes perfect sense.  It seems like a service-based update is
really the right way to go.  It avoids any potential timeout issue and
is allows updating of all widgets at once.

Thanks for your help.

...Jake


>>>>> "KV" == Kostya Vasilyev <kmans...@gmail.com> writes:

   KV> Jake,

   KV> onUpdate is passed an explicit list of just the widget ids that
   KV> need to be updated. Supposedly, there could be widgets that
   KV> belong to this provider but don't need updating (e.g. on a
   KV> scrolled-off home screen portion).

   KV> Pushing a RemoveViews object to a paricular widget is done by
   KV> calling:

   KV> manager.updateAppWidget(int widgetId, updateViews);

   KV> It's also possible to update all widgets that belong to a
   KV> particular widget provider, and this is the approach
   KV> service-based widgets take, supposedly to avoid paying service
   KV> start-up costs for each widget id.

   KV> In this case, a single RemoteViews is pushed to all widgets with
   KV> a single call to:

   KV> manager.updateAppWidget(ComponentName thisWidget, updateViews);

   KV> -- Kostya

   KV> 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,
   KV> 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
   >> 
   >> 

   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

-- 
Jake Colman -- Android Tinkerer

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

Reply via email to