如何从"recent apps"插槽中擦除原始意图?



我的应用程序在清单中有启动模式属性="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);
}

相关内容

  • 没有找到相关文章

最新更新