繁体   English   中英

处理活动状态的最佳方法

[英]Best way to handle activity state

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

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

public void onBackPressed()
        moveTaskToBack(true);
    }

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

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

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

您的问题是您将LoginActivity保留在堆栈中。 因此,当您按回时,它将杀死MainActivity(登录后),并且由于LoginAcitivity仍然存在。 它将再次显示。 最好是在开始新活动后杀死LoginAcitivty。

在LoginActivity中调用此命令:

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

如您所知,您想清除整个历史记录堆栈并开始新的活动。 为此,在API级别11中添加了一个新的Intent标志,即: 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级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM