处理 activity 状态的最佳方式

Best way to handle activity state

我正在制作一个应用程序,当我正确登录时会显示另一个 activity 但是在主屏幕上,当我按下返回然后返回到应用程序时显示登录 activity。

我能够通过这种方式避免覆盖 onBackPressed:

public void onBackPressed()
        moveTaskToBack(true);
    }

这是最好的方法吗?当我退出应用程序时,有没有更合适的方法来保持应用程序的状态?

在您登录后 activity 启动 intent 调用 finish()

完成销毁你的 activity 并自动避免再次 运行 它。

您的问题是您将 LoginActivity 保留在堆栈中。所以当你按回它会杀死 MainActivity(登录后)并且因为 LoginAcitivity 仍然存在。它将再次显示。最好是在启动新 activity.

后终止 LoginAcitivty

在 LoginActivity 中调用:

Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);
finish();

如你所问,我明白了,你想清除整个历史堆栈并开始一个新的 activity。为此,在 API 级别 11 中添加了一个新的 Intent Flag,即:Intent.FLAG_ACTIVITY_CLEAR_TASK

为了澄清,使用这个:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

对于 API <=10 现在可以使用 IntentCompat class。可以使用 IntentCompat.FLAG_ACTIVITY_CLEAR_TASK 标志来清除任务。所以你也可以支持 pre API level 11。