0

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

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

public void onBackPressed()
        moveTaskToBack(true);
    }

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

4

3 回答 3

0

正如你的问题我理解,你想清除整个历史堆栈并开始一个新的活动。为此,在 API 级别 11 中添加了一个新的意图标志,即:Intent.FLAG_ACTIVITY_CLEAR_TASK

只是为了澄清,使用这个:

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

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

于 2016-10-10T05:16:09.853 回答
0

您的问题是您将 LoginActivity 保留在堆栈中。所以当你按下它会杀死 MainActivity(登录后),因为 LoginAcitivity 仍然存在。它将再次显示。最好是在开始新活动后杀死 LoginAcitivty。

在 LoginActivity 中调用它:

Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);
finish();
于 2016-10-09T21:50:35.023 回答
0

在开始意图调用完成()后的登录活动中

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

于 2016-10-09T21:42:59.967 回答