Я уверен, что что-то упускаю, но я просто пытаюсь получить виджет приложения с кнопкой и счетчиком. Каждый раз, когда я нажимаю кнопку, я хочу, чтобы счетчик обновлялся на 1.
Я установил функцию onUpdate() WidgetProvider, чтобы зарегистрировать ожидающее событие для кнопки, чтобы она запускала службу для увеличения счетчика:
Intent active = new Intent(context, CounterService.class);
active.setAction(CounterService.COUNT);
PendingIntent pending = PendingIntent.getService(context, 0, active, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.CountButton, pending);
ComponentName component = new ComponentName(context.getPackageName(), KickCounterWidgetProvider.class.getName());
appWidgetManager.updateAppWidget(component, views);
Затем в сервисной функции CounterService::onStart() я увеличиваю счетчик (пока что хранится в префах), а затем пытаюсь обновить текстовое поле, которое показывает текущее значение счетчика:
// ... bump the count here and store a string representation of it in currentCountString ...
RemoteViews remoteView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.widget);
remoteView.setTextViewText(R.id.CurrentKickCount, currentCountString);
// apply changes to widget
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
ComponentName component = new ComponentName(getApplicationContext().getPackageName(), KickCounterWidgetProvider.class.getName());
appWidgetManager.updateAppWidget(component, remoteView);
Разумное использование Logcat показывает, что все это работает нормально, и строка кажется в порядке, но по какой-то причине вызов appWidgetManager.updateAppWidget() по какой-то причине, похоже, не работает.
Я не знаю, связано ли это вообще, но в первый раз, когда я добавляю экземпляр виджета на рабочий стол, даже кнопка не работает (т.е. вызов updateAppWidget() в onUpdate() в провайдере не работает). Последующие экземпляры виджета, кажется, работают нормально для вызова updateAppWidget() в Provider, но никогда не работают для службы.
Любая помощь будет принята с благодарностью.