RemoteViewFactory onDataSetChanged () solo se llama una vez por notifyAppWidgetViewDataChanged () [duplicado]

Esta pregunta ya tiene una respuesta aquí:

onGetViewFactory solo se llama una vez para varios widgets 2 respuestas

Estoy creando un widget para cargar una lista de ingredientes por receta. Mi objetivo es poder tener múltiples instancias del widget y tener su lista de ingredientes (ListView) cargada / actualizada de forma independiente. He configurado una actividad de configuración para que el usuario seleccione la receta. Después de configurar y rellenar remoteViews y hacer RemoteAdapter para mi lista de ingredientes, el método siempre llamaría:

appWidgetManager.updateAppWidget(mAppWidgetId, views);
appWidgetManager.notifyAppWidgetViewDataChanged(mAppWidgetId, R.id.widget_list_view_layout);

updateAppWidget actualiza muy bien las vistas que no son de colección, sin embargo, estoy teniendo problemas con notifyAppWidgetViewDataChanged () para mi vista de colección, la lista de ingredientes.

La primera vez que agrego el widget a la pantalla (receta ID 4), se carga correctamente y llama al servicio correcto y ve a la fábrica para llenar el listView remoto. Pero si agrego el segundo, esto es lo que sucede (o falta de él):

D/WidgetUtils: createAppWidgetResult() with appWidgetId: 78, recipeId: 4
D/WidgetUtils: RecipeId of the ingredients passed: 4
D/WidgetRemoteViewService: onGetViewFactory() call received with mRecipeId 4
D/WidgetRemoteViewsFactory: WidgetRemoteViewsFactory() constructed with recipeId: 4
D/WidgetRemoteViewsFactory: onDataSetChanged() called
D/WidgetUtils: createAppWidgetResult() with appWidgetId: 79, recipeId: 1
D/WidgetUtils: RecipeId of the ingredients passed: 1 
D/WidgetUtils: createAppWidgetResult() with appWidgetId: 80, recipeId: 2
D/WidgetUtils: RecipeId of the ingredients passed: 2

Fin del registro

Esperaba lo siguiente, si la identificación de la receta es1

D/WidgetRemoteViewService: onGetViewFactory() call received with mRecipeId **1**
D/WidgetRemoteViewsFactory: WidgetRemoteViewsFactory() constructed with recipeId: **1**
D/WidgetRemoteViewsFactory: onDataSetChanged() called

Pero como puede ver en el registro anterior, no sucede nada después de 1 (a diferencia de 4, que es el comportamiento esperado)

UI sabio, cualquier vista de lista de widget creada posteriormente tiene los ingredientes para la receta 4 (no 1), incluso cuando la actividad de configuración claramente pasa la identificación como 1 ... 2 ... 6..etc.

Curiosamente Solo después de eliminar todos mis widgets de la pantalla de inicio, y luego agregar UN widget, por ejemplo, la receta ID 1, entonces se llamará a onDataSetChanged ()?, Y nuevamente, no se llamará a ningún widget posterior.

Ver la captura de pantalla La identificación de la Receta de Nutella Pie es 4, y la identificación de la Receta de Brownies es 1. Primero se agrega el widget de Nutella Pie, los ingredientes para Nutella Pie se cargan correctamente. Los Brownies se agregan en segundo lugar y, como puede ver, los ingredientes se transfieren del primero y son incorrectos.

Probado en emulador y dispositivos reales> API 21, mismo resultado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta