如何清除启动Activity的Intent?

pix*_*xel 26 android android-intent android-activity

在开始时,Intent会启动Activity,并使用此Intent完成某些操作.

当我更改Activity的方向时,它会再次重新加载,并将Intent传递给Activity.

如何清除Intent以阻止Activity再次使用它?

我试过了setIntent(null),但没有结果.

小智 24

我有类似的问题.这对我有帮助.也许您还必须使用onSaveInstanceState(Bundle outState)并向bundle添加额外数据,因此inState不为null,不确定.

Intent activityIntent = null; // Subsequent times it's null

@Override 
protected void onCreate(Bundle inState) {
    super.onCreate(inState);
    .
    .
    if (inState!=null) {
        /*Recreating activity with a saved state*/
    } else {
        /*Creating activity*/
        activityIntent = getIntent(); // First time through intent is used
        /*Get your Extra Intent data here. You will be capturing data on 1st creation. */
}
Run Code Online (Sandbox Code Playgroud)

  • 在退出应用程序退出后,从最近的应用程序列表打开时,这对我不起作用.该应用程序打开时使用null Bundle但前一个意图. (2认同)

Ole*_*ich 10

不要用setIntent(null).似乎虽然它有时可能有效,但在某些情况下,原始意图可能会回来.

相反,setIntent()使用没有动作,数据或附加功能的简单意图进行调用,例如new Intent(Context, Class).

实际上,首先使用setIntent()它实际上并不是一个好的API设计决策.相反,正如dcg所指出的那样,确保只在第一次检查你的意图时,你savedInstanceState仍然是空的.

  • setIntent只是让你迷惑 - 不要使用它.请参阅@ dcg的答案.销毁活动时,无论您使用setIntent执行什么操作,始终会重新使用启动活动的原始意图.原始的Intent完全保留在应用程序之外,在ActivityManager中,并且setIntent对它没有任何影响.请参阅Dianne Hackborn的帖子:https://groups.google.com/forum/#!msg/android-developers/vrLdM5mKeoY/ThkOonAbtloJ (3认同)