Замена RemoteViewsFactory на обновление виджета приложения

Виджет моего приложения работает в нескольких режимах. Для каждого из этих режимов я создал RemoteViewsFactory . Чтобы переключаться между режимами, я отправляю намерение моему AppWidgetProvider . Получив его, я создаю RemoteViews и RemoteViews его в updateAppWidget() . Чтобы установить RemoteViewsFactory для представления коллекции, я RemoteViews setRemoteAdapter() :

 rv.setRemoteAdapter(appWidgetId, R.id.widget_view_flipper, intent); 

R.id.widget_view_flipper – это представление коллекции, intent является RemoteViewsService для создания соответствующей фабрики.

EDIT: Я отредактировал вопрос, потому что я понял изначально описанную проблему. Теперь, когда я меняю фабрики, getViewAt() нового завода вызывается после изменения, но элемент в представлении коллекции просто не обновляется! Как это могло случиться?

Пока что единственное, что я придумал, это то, что я могу вызвать notifyAppWidgetViewDataChanged AppWidgetManager с задержкой после замены фабрики, это заставляет элемент в представлении обновляться с уродливым миганием.

После полудня копания я придумал обходной путь.

Когда мне нужно обновить виджет и заменить завод, сделайте следующее в AppWidgetProvider:

 appWidgetManager.updateAppWidget(appWidgetIds[i], null); appWidgetManager.updateAppWidget(appWidgetIds[i], rv); 

Где rv – это новый RemoteView.

Старый RemoteViews кэшируется в AppWidgetHostView, таким образом мы можем избавиться от кэшированных данных.

Intereting Posts
Отображать неопределенный индикатор прогресса в строке состояния на Android Как очистить стек истории событий при нажатии кнопки «домой»? Активность Android внутри диалога Использовать Календарь в эмуляторе Android 4.0 + Как скрыть клавиатуру автоматически после отправки электронной почты с помощью emailIntent Как изменить цвет «маленького треугольника» в панели действий NAVIGATION_MODE_LIST Не удалось настроить k-9 mail (k-9-5.107) в приложении Android? Как проверить ресурс Android Asset? Попытка прочитать свойство «main» из представления только для записи элемента модели «android.sources», заданного для правила android.sources {…} Удалить название на панели инструментов в appcompat-v7 Обнаружение щелчка на кнопке возврата панели действий – (OnOptionsItemSelected не вызывается при нажатии кнопки панели действий) Проблема с электронной почтой (отправка гиперссылки по электронной почте) Android Face Detection с использованием OpenCV / JavaCV LinearGradient Center Animation Как использовать интеграцию Google Plus в Android Studio