Android: Opening wrong Activity from the widget

Я уже некоторое время бьюсь над этой проблемой. У меня есть виджет, который отображает краткое описание кулинарного рецепта. Виджет кликабельный, поэтому всякий раз, когда пользователь нажимает на него, открывается новая активность с полным описанием этого рецепта. Проблема в том, что иногда при нажатии на виджет открывается не та активность. Приведу пример:

  1. Пользователь нажимает на виджет и открывается активность A.
  2. Пользователь запускает активность B (например, индекс рецептов) из активности A.
  3. Пользователь запускает активность C из активности B.
  4. Пользователь нажимает кнопку Home.
  5. Пользователь снова нажимает на виджет, и вместо A отображается активность C

Я попробовал установить комбинацию этих трех флагов, которая помогла решить только половину проблемы:

openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

Используя вышеуказанные флаги, мне удалось отобразить правильную активность (A), пока я не сделаю следующее:

  1. Пользователь открывает активность A из виджета
  2. Пользователь переходит к активности B и открывает активность A, нажав на новый рецепт
  3. Новый рецепт отображается пользователю
  4. Пользователь нажимает кнопку Home и нажимает на виджет.
  5. Отображается активность А (правая), но с другим рецептом.
  6. С этого момента, если я перейду к другой деятельности B или C и нажму Home, а затем снова на виджет, деятельность A не отображается, а отображается та, которая была видна до нажатия кнопки Home.

Надеюсь, я объяснил все достаточно подробно. Я буду очень благодарен за помощь, потому что эта проблема сводит меня с ума!

Обновлено:

Это мое ожиданиеНамерение:

Intent openIntent = new Intent(context, ProfanityDefinition.class);

openIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
openIntent.setData(Uri.parse(openIntent.toUri(Intent.URI_INTENT_SCHEME)));

Bundle bundle = new Bundle();
bundle.putBoolean("widgetRequest", true);
openIntent.putExtras(bundle);
PendingIntent openPendingIntent = PendingIntent.getActivity(context, 0, openIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.widget_content, openPendingIntent);

Спасибо

5
задан Marqs 28 September 2011 в 10:07
поделиться