У меня странное поведение, и я могу только предположить, что это из-за ожидаемых намерений, которые я использую.
Сценарий
У меня есть виджет (4x1), который имеет 4 кнопки. В onUpdate виджета я добавляю ожидающее намерение для каждой кнопки. Мое намерение запускает Сервис с параметром, состоящим из нескольких частей, и в зависимости от этого параметра запускает что-то. Я прилагаю намерения как это:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
Bundle b = new Bundle();
b.putString("myVariable", someVariable);
Intent intent = new Intent(context, AppStarterService.class);
intent.putExtras(b);
PendingIntent pendingIntent = PendingIntent.getService(context, buttopnPosition, intent, 0);
views.setOnClickPendingIntent(R.id.btnOne, pendingIntent);
Проблема
Код работает просто отлично, пока пользователь не решит обновить содержимое кнопки. Затем выполняется новое ожидающее намерение. Поэтому, когда я снова нажимаю кнопку, иногда она выполняет старые намерения, а не новые. Я не знаю, как объяснить это лучше. Скажем, для моего первого намерения параметр «TestOne», после моего обновления новое намерение имеет параметр «TestX». Когда пользователь нажимает на кнопку, на моем сервисе я получаю дополнительные намерения по-прежнему «TestOne» вместо «TestX». Итак, я предполагаю, что каким-то образом мне нужно отменить предыдущее намерение, когда содержимое кнопки виджета изменится.
Это проблема? Я делаю что-то неправильно ? Как мне отменить старые намерения, мне нужно восстановить их, а затем отменить?
Спасибо, что уделили время.