我正在制作一个应用程序,当我正确登录时显示另一个活动,但是当我按下返回然后返回到登录活动显示的应用程序时,在主屏幕中。
我能够通过这种方式避免覆盖 onBackPressed:
public void onBackPressed()
moveTaskToBack(true);
}
这是最好的方法吗?当我退出应用程序时,是否有更合适的方法来保持应用程序的状态?
我正在制作一个应用程序,当我正确登录时显示另一个活动,但是当我按下返回然后返回到登录活动显示的应用程序时,在主屏幕中。
我能够通过这种方式避免覆盖 onBackPressed:
public void onBackPressed()
moveTaskToBack(true);
}
这是最好的方法吗?当我退出应用程序时,是否有更合适的方法来保持应用程序的状态?
正如你的问题我理解,你想清除整个历史堆栈并开始一个新的活动。为此,在 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。
您的问题是您将 LoginActivity 保留在堆栈中。所以当你按下它会杀死 MainActivity(登录后),因为 LoginAcitivity 仍然存在。它将再次显示。最好是在开始新活动后杀死 LoginAcitivty。
在 LoginActivity 中调用它:
Intent intent = new Intent(context, MainActivity.class);
startActivity(intent);
finish();
在开始意图调用完成()后的登录活动中
完成销毁您的活动并避免自动再次运行它。