是否可以在堆栈上启动活动,清除之前的整个历史记录?
情况
我有一个活动堆栈,可以是A-> B-> C或B-> C(屏幕A选择用户令牌,但许多用户只有一个令牌).
在屏幕C中,用户可以采取使屏幕B无效的动作,因此应用程序想要将它们带到屏幕A,而不管它是否已经在堆栈中.屏幕A应该是我的应用程序中堆栈上唯一的项目.
笔记
还有许多其他类似的问题,但我没有发现任何可以回答这个问题的问题.我试过调用getParent().finish()- 这总是导致空指针异常.FLAG_ACTIVITY_CLEAR_TOP仅在活动已在堆栈上时才有效.
我在Android中有一个包含多个活动的应用程序,我希望用户能够通过按菜单按钮注销.我遇到的问题是
A)的Android不会让你终止应用程序和
B),即使我的用户发送给LoginActivity他们又可以随时按下背部和马上回以前的活动,他们是in.
我已经尝试使用以下两个标志启动Activity:
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我也亲自尝试过每一个.
我也打过电话finish()后startActivity(intent),我在另一个StackOverflow的问题读取.
我的应用程序旨在仅允许登录用户访问活动.如果用户注销,则共享首选项布尔值isLogged将设置为false,并且用户不应访问除LoginActivity之外的其他活动.
但是,我可以通过按后退按钮访问以前打开的所有活动.
我会finish();在打开每个活动时使用,但我希望用户在登录时仍然使用后退按钮.
我尝试过其他类似问题的解决方案
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
并且在onCreate()我的LoginActivity的我已经加入
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
Run Code Online (Sandbox Code Playgroud)
当我按下注销选项时,将打开上一个活动.
有什么建议请帮帮我?