2010-05-15 21 views
14

Tengo un servicio en segundo plano que se puede configurar para realizar alguna acción cada x minutos. Quiero implementar un widget que se actualice cada vez que mi servicio realice esa acción. Sin embargo, no puedo obtener el método onUpdate de mi AppWidgetProvider llamado de ninguna manera, excepto cuando agrego un widget a la pantalla de inicio.¿Cómo actualizar widgets desde un servicio?

Intenté enviar APPWIDGET_UPDATE intents pero onUpdate no se llamó aunque el AppWidgetProvider recibió el intento desde que se llamó al método onReceive. ¿Hay alguna forma en que pueda activar actualizaciones de widgets desde un servicio?

Respuesta

19

Simplemente hágase un RemoteViews y actualice el (los) widget (es) directamente en el Service. Tendrá su AppWidgetManager a través de:

AppWidgetManager mgr=AppWidgetManager.getInstance(this); 

Todo lo demás es lo más normal.

Nota: - Si realmente quiere forzar la AppWidgetProvider existente para hacer el trabajo, enviar una difusión con una acción personalizada a su componente, y llame a sí mismo de onUpdate()onReceive() cuando usted lo consigue.

+0

Gracias! La segunda sugerencia es lo que hice y funciona como un encanto. ¿Por qué no pensé en eso yo mismo? :) – Franklin

+0

onUpdate necesita una matriz int [] appWidgetIds como argumento. ¿Cómo lo calcula cuando está en el método onReceive? –

+2

@Guido: llame a 'getAppWidgetIds()' en 'AppWidgetManager': http://developer.android.com/reference/android/appwidget/AppWidgetManager.html – CommonsWare

Cuestiones relacionadas