处理活动状态的最佳方式

时间:2016-10-09 21:40:12

标签: android activity-lifecycle activity-stack activity-state

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

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

public void onBackPressed()
        moveTaskToBack(true);
    }

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

3 个答案:

答案 0 :(得分:0)

在启动intent call finish()

后的登录活动中

完成破坏你的活动,避免再次自动运行。

答案 1 :(得分:0)

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

在LoginActivity中调用它:

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

答案 2 :(得分:0)

正如您所了解的那样,您希望清除整个历史记录堆栈并开始新的活动。为此,在API级别11中添加了一个新的Intent Flag,即: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标志来清除任务。因此,您也可以支持API级别11。