我正在为通知托盘创建通知。我正在指定一个像这样的点击意图:
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()));
使用“foo”参数可以很好地启动MyActivity类。然而,我无法在之后摆脱那些额外的东西 - 似乎在意图中持续存在:
// MyActivity
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// please go away..
intent.removeExtra("foo");
getIntent().removeExtra("foo");
}
迭代意图的键表明“foo”不再存在。但是如果我对活动进行后台处理,然后再次将其置于前台,则再次出现“foo”参数。
任何人都知道如何真正摆脱它?我也试过调用setIntent(),同样的行为。这就像发射器坚持原始意图并不断重复使用它。
由于
答案 0 :(得分:0)
这正是Android正在做的事情。修改onNewIntent方法中的intent参数不会影响通知系统的存储意图。您应该创建一个新的Intent并将其存储在您的活动中,与其他任何数据一样保存和恢复。
编辑:如果您不需要重复使用意图本身,则分别存储相关数据可能更有意义。