2012-09-13 32 views
8

Tengo un widget basado en ListView funcionando bien, y se basa en una llamada de servicio web JSON para poblar en sí. Tengo un botón de actualización que funciona muy bien y obliga a recargar desde la web. Lo hago usando una transmisión personalizada que luego llama a onDataSetChanged() y luego a updateAppWidget() en secuencia. Lo que encontré es que cuando Android actualiza el widget automáticamente (basado en el intervalo de tiempo configurado como mi definición XML), solo se llama a updateAppWidget() y mi función onDataSetChanged() nunca se ejecuta, lo que lleva a una marca de tiempo actualizada (que Actualizo en cada llamada a updateAppWidget()), pero datos obsoletos.widgets de Android: no onDataSetChanged llamados por updateAppWidget()

¿Cómo puedo forzar a Android a llamar o desencadenar onDataSetChanged() en un intervalo determinado?

+0

¿Alguna vez se llame 'notifyDataSetChanged()' en el adaptador remoto? – Eric

+0

No. ¿Cuándo/debería hacer eso? Parece que el código de actualización automática no me da una devolución de llamada? – RealCasually

+0

Me gustaría pensar que, en la actualización, debe tener alguna referencia a su adaptador (no sé cómo desea guardar este), a continuación, puede llamar a la notificación sobre el mismo. 'onDataSetChanged()' solo se llama * después * de que se envíe la notificación. – Eric

Respuesta

9

Resulta que necesitaba llamar al AppWidgetManager.notifyAppWidgetViewDataChanged(widgetId, view) dentro de mi método AppWidgetProvider.onUpdate().

Cuestiones relacionadas