Виджет приложения Android имеет странный глюк при обновлении
Я разработал небольшой виджет приложения и имею некоторые проблемы с обновлением удаленных представлений. Когда обновление виджета через системный вызов все в порядке, но когда я пытаюсь обновить виджет из моего сервиса через этот код:
AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
ComponentName widgetComponent = new ComponentName(this, NBRBAppWidget.class);
int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent);
Intent update = new Intent();
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
sendBroadcast(update);
Мой виджет глюков. Пример глюка есть на видео ниже
Я проверил, что метод обновления просмотров занял 7-20 мс
Если у кого-то есть предположение, почему это происходит, пожалуйста, дайте мне знать.
1 ответ
Чтобы избежать сбоя в работе виджета, я просто удаляю отправку трансляции ACTION_APPWIDGET_UPDATE и вызываю RemoteView вместо него, например так:
AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
ComponentName widgetComponent = new ComponentName(this, NBRBAppWidget.class);
int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent);
for (int i = 0; i < widgetIds.length; i++) {
NBRBAppWidget.updateWidget(this, widgetManager, widgetIds[i]);
}
NBRBAppWidget.updateWidget - метод, который делает вызовы к удаленным представлениям