RemoteViewFactory onDataSetChanged () chamado apenas uma vez por notifyAppWidgetViewDataChanged () [duplicado]

Esta pergunta já tem uma resposta aqui:

onGetViewFactory chamado apenas uma vez para vários widgets 2 respostas

Estou construindo um widget para carregar uma lista de ingredientes por receita. Meu objetivo é poder ter várias instâncias do widget e ter sua lista de ingredientes (ListView) carregada / atualizada independentemente. Eu configurei uma atividade de configuração para o usuário selecionar a receita. Após configurar e preencher os remoteViews e criar o RemoteAdapter para minha lista de ingredientes, o método sempre chamaria:

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

updateAppWidget atualiza muito bem as exibições que não são de coleção, no entanto, estou aproveitando o notifyAppWidgetViewDataChanged () para minha exibição de coleção, a lista de ingredientes.

A primeira vez que adiciono o widget à tela (receita ID 4), ele carrega corretamente e chama o serviço correto e exibe a fábrica para preencher o listView remoto. Mas se eu adicionar o segundo, aqui está o que acontece (ou a falta dele):

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

Fim do log

Eu estava esperando o seguinte, se o ID da receita for1

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

Mas como você pode ver no log acima, nada acontece após 1 (ao contrário de 4, que é o comportamento esperado)

UI, qualquer visualização de lista de qualquer widget criado posteriormente tem os ingredientes para a receita 4 (não 1), mesmo quando a atividade de configuração passa claramente o ID como 1 ... 2 ... 6..etc.

Estranhamente o suficiente: Only Depois de remover todos os meus widgets da tela inicial e adicionar UM widget, por exemplo, o ID da receita 1, seu onDataSetChanged () será chamado?! E, novamente, qualquer widget subsequente não será chamado.

Veja a captura de tela O ID da receita da torta de Nutella é 4 e o ID da receita dos Brownies é 1. O widget Torta de Nutella é adicionado primeiro, os ingredientes da Torta de Nutella são carregados corretamente. Os Brownies são adicionados em segundo e, como você pode ver, os ingredientes são transferidos do primeiro e estão incorreto

Testado em emulador e dispositivos reais> API 21, mesmo resultad

questionAnswers(1)

yourAnswerToTheQuestion