Android appwidget no se actualizará desde la actividad
Tengo un appwidget simple y quiero actualizarlo cuando ocurre una acción en una actividad (en la misma aplicación). En onUpdate (), inmediatamente actualizar el widget, que funciona bien. En mi actividad, llamo al mismo método de actualización estática en mi appwidget que se llama en onUpdate () para actualizar las vistas. El widget no se actualiza.
Puedo rastrear el código justo en el método AppWidgetManager.updateAppWidget (), y todo esto bien, pero el widget no se actualiza.
- Escuchar gestos en un widget de aplicación
- Cómo iniciar la actividad desde el widget de pantalla de inicio de Android
- La aplicación no se muestra en la lista de aplicaciones recientes cuando se abre mediante PendingIntent
- Android Lollipop: El lanzador se bloquea al agregar el widget de la aplicación a la pantalla de inicio
- ¿Cómo puedo crear un widget de aplicación de paginación de Android compatible con versiones anteriores?
La única diferencia posible que puedo ver es que el objeto de contexto pasado en mi método de actualización estática es diferente, cuando se llama desde el contexto de una actividad frente al contexto del método onUpdate () de un appwidget. Sin embargo, hay muchos ejemplos en la web de este así que espero que debería funcionar.
- La vida útil de AppWidget ID
- Android - ¿cómo actualizar widget a menudo, pero sólo cuando es visible?
- Appwidget Máximo ancho que se adapta a todos los tamaños de pantalla
- Android AppWidget onUpdate en el arranque
- Appwidget se congela y se niega a actualizar más: ignora updateAppWidget
- Reemplazando RemoteViewsFactory en la actualización del widget de aplicación
- AppWidget PendingIntent no funciona después de reiniciar el Lanzador
- Actualización de AppWidget
Sin ver tu código no estoy 100% seguro de cómo estás tratando de hacerlo, sin embargo aquí está el método que uso. Dentro de mi Activity
tengo el siguiente método:
private void updateAllWidgets(){ AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(this, MyWidget.class)); if (appWidgetIds.length > 0) { new MyWidget().onUpdate(this, appWidgetManager, appWidgetIds); } }
Donde MyWidget
es la clase del appwidget. Puedo llamar a este método desde cualquier lugar dentro de mi Activity
para actualizar todos mis appwidgets.
En lugar de utilizar un método estático aprovechar el hecho de que el widget ya es un receptor de difusión y registrar una intención de actualización en su manifiesto. Luego, cada vez que necesite actualizarlo desde la actividad, simplemente llame al
//in your activity sendBroadcast(new Intent(MyWidget.ACTION_UPDATE).putExtra(whatever)); //In widget class public static final String ACTION_UPDATE = "com.example.UPDATE_MY_WIDGET";
Y dentro de las etiquetas del receptor de su archivo de manifiesto
<intent-filter> <action android:name="com.example.UPDATE_MY_WIDGET"/> </intent-filter>
- Proguard Retrace no funciona con información de tiempo de ejecución de stacktrace como E / AndroidRuntime (10237):
- Adición de marcadores múltiples en Google Maps API v2 Android