0

我的应用在清单中有启动模式属性 =“singleTop”,并使用 getIntent() 处理它启动的意图。处理意图后,它调用 setIntent(new Intent()); 抹去原意。如果再次创建活动(例如,如果管理方向更改),这可以避免活动处理相同的意图。

当我按下后退按钮时活动被破坏时,我只是遇到了问题:事实上,当我点击它的“最近的应用程序”插槽时,活动被再次创建并且我再次处理了原始意图。如果我从主屏幕再次调用该应用程序,则没有原意。

注意:

  • 该应用程序必须在“最近的应用程序”菜单中可见;
  • 活动可以接收进一步的意图(它是“singleTop”)并在 onNewIntent() 中处理它们;
  • 如果活动被破坏,它可以有意图地重新开始;如何也从“最近的应用程序”插槽中删除原始意图?
4

1 回答 1

0

您不应该仅仅为了删除活动创建参数(意图)而重新启动活动之类的事情。这是默认的 Android 系统行为,用于保留创建它的 Intent。

您可以在创建 flag 时绕过它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);
}
于 2014-09-24T12:06:38.310 回答