我的应用程序在清单中有启动模式属性="singleTop",并通过getIntent()处理启动意图。在处理完意向之后,它调用setIntent(new intent());以抹杀最初的意图。这样可以避免在再次创建活动时(例如,如果方向更改得到管理)处理相同的意图。
当我按下后退按钮时,活动被破坏时,我会遇到问题:事实上,当我点击其"最近的应用程序"插槽时,活动会再次创建,我会再次处理原始意图。如果我再次从主屏幕调用该应用程序,则没有初衷。
注意:
- 该应用程序必须在"最近的应用程序"菜单中可见
- 活动可以接收更多的意图(它是"singleTop"),并在onNewIntent()中处理它们
- 如果活动被破坏,则可以有意图地重新启动;如何删除"最近的应用程序"插槽的初衷
您不应该为了删除活动创建参数(Intent)而再次启动活动。这是默认的安卓系统行为,以保持创建时使用的Intent。
您可以在创建标志boolean dataHandled
时绕过此选项。处理完第一次意图后,设置dataHandled = true
。当然,不要忘记将这个值保存在onSaveInstanceState
调用中。
protected void onCreate(Bundle savedInstanceState) {
if(!savedInstanceState.containsKey("dataHandled") {
//handle IntentData
}
}
protected void onSaveInstanceState(Bundle outState) {
outState.putBoolean("dataHandled", true);
super.onSaveInstanceState(outState);
}