Не удается удалить намерение дополнительно!

Я создаю уведомление для лотка уведомлений. Я указываю намерение щелчка следующим образом:

Intent intent = new Intent(context, MyActivity.class);
intent.putExtra("foo", true);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setData(Uri.parse("" + System.currentTimeMillis()));

Класс MyActivity запускается просто отлично с присутствующим параметром "foo" . Однако после этого я не могу избавиться от этого лишнего - он, похоже, сохраняется в намерении:

// MyActivity
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    // please go away..
    intent.removeExtra("foo");
    getIntent().removeExtra("foo");
}

Итерация по клавишам намерения показывает, что "foo" больше не существует. Но если я занимаюсь активностью, а затем снова вывожу ее на передний план, снова появляется параметр "foo" .

Кто-нибудь знает, как действительно избавиться от него? Я также попытался вызвать setIntent(), такое же поведение. Он, как пусковая установка, держится за первоначальное намерение и продолжает повторное использование.

Спасибо

Ответ 1

Именно это делает Android. Изменение параметра намерения в методе onNewIntent не влияет на сохраненное намерение системы уведомлений. Вы должны создать новый Intent и сохранить его локально в своей деятельности, сохраняя и восстанавливая его, как и любые другие данные.

EDIT: Если вам не нужно повторно использовать намерение, вероятно, имеет смысл хранить соответствующие данные отдельно.