Tot*_*tic 53 stack android android-activity back-stack
我在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的问题读取.
小智 42
这应该是按位OR,否则你最终会覆盖早期的标志.
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)
像这样:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)
Ten*_*r04 35
在您的登录活动中,覆盖后退按钮,以便隐藏您的应用而不是完成活动:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
另外一定要在root活动上设置android:alwaysRetainTaskState ="true",这样Android在用户不活动30分钟后就不会清除你的堆栈(包括登录活动).
然后在成功登录时调用finish().
Ric*_*ier 31
添加android:noHistory="true"属性到你<activity>在AndroidManifest.xml这样的:
<activity android:name=".MyActivity"
android:noHistory="true">
</activity>
Run Code Online (Sandbox Code Playgroud)
如果您使用Android API 11或以上,可以使用以下代码清除堆栈.
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
Run Code Online (Sandbox Code Playgroud)
这不会清除你的活动堆栈.
即使在完成上述所有答案之后,当我按下后退按钮时,它会在关闭应用程序之前显示最后一次活动.
这就是我做的:
@Override
public void onBackPressed() {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
Run Code Online (Sandbox Code Playgroud)
现在我的应用程序退出按下:)没有任何麻烦.
| 归档时间: |
|
| 查看次数: |
57526 次 |
| 最近记录: |