【发布时间】:2015-09-18 06:44:34
【问题描述】:
我有一个 Activity,它会在 Intent 有数据时自动重定向到另一个 Activity。一个简单的sn-p如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
Intent intent = getIntent();
String mykey = intent.getStringExtra("MyKey");
if (mykey != null) {
intent.removeExtra("MyKey");
Intent sendingIntent = new Intent(this, targetActivity.class);
sendingIntent.putExtra("Next Key", mykey);
startActivity(sendingIntent);
}
}
我把它放在onCreate(),这样如果它返回到这个活动(例如用户从targetActivity按下后退按钮),它就不会被调用,也不会再次自动重定向到targetActivity。
但是,如果打开了 DO NOT KEEP ACTIVITY(用于测试活动被杀死的场景),则始终调用 onCreate。 Intent 取回其 Caller 设置的原始值,并继续进行重定向。
所以我想我可以在使用后删除 Intent。参考Clearing intent,表示要清除intent(或intent的extra),使用
intent.removeExtra("MyKey");
这似乎只在正常情况下有效,但在开启“不保持活动”时无效。
因此我的问题是,有没有办法确保 Intent 在进入活动时只使用一次并被清除?即当用户返回活动(按下后退按钮)时,无论它是恢复还是重新启动(即 DO NOT KEEP ACTIVITY 处于打开状态),都应清除意图(或额外的)。
谢谢!!
【问题讨论】: