gpt4 book ai didi

android - TabGroupActivity android 应用程序-退出后防止返回

转载 作者:行者123 更新时间:2023-11-30 03:35:30 25 4
gpt4 key购买 nike

我有一个使用标签组 Activity 的应用程序。选项卡在其内部打开每个 Activity 的方式一切正常,但是当用户注销时我的麻烦来了。我有一个确认用户想要注销的对话框,当他们单击"is"时,它会向 url 发送一个 http 请求,该请求会终止 session 服务器端,从商店首选项中清除一些变量,然后启动登录 Activity 。这一切都很好,但是当用户此时位于登录屏幕时,如果他们返回,则会将他们带回到他们点击注销之前的 Activity 。我试过添加标志,例如 FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_NO_HISTORY,似乎都没有用,它们仍然可以反击并返回上一个 Activity 。因此,我覆盖了登录屏幕上的 onBackPressed 方法,改为将应用程序发送到后台 (moveTaskToBack(true))。这似乎有效,当我返回时它会转到主屏幕,但如果我单击我的应用程序的图标,它不会在我预期的登录屏幕上恢复,而是在用户注销之前的 Activity 上恢复。关于我可以尝试做些什么的任何想法,以便当用户注销时,它会清除所有以前的 Activity 并向他们展示我的登录 Activity 而无法返回?预先感谢您的帮助!!!

最佳答案

如果您的最低目标是 Honeycomb 或更高,那很容易。如果您的最小值较低,它会变得稍微复杂一些。使用 Honeycomb,您可以向 Intent 添加一些标志,并且效果很好。在较低的 API 级别,我发现唯一有保证的方法是使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 启动一个 Activity ,并让该 Activity 启动您的登录 Activity ,然后完成。

@TargetApi( Build.VERSION_CODES.HONEYCOMB )
private void logout() {

Intent intent;
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) {

intent = new Intent( this, LoginActivity.class );
intent.addFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK );
startActivity( intent );
finish();
}
else {

intent = new Intent( this, HomeActivity.class );
intent.putExtra( "logout", true );
intent.addFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity( intent );
finish();
}
}

HomeActivity

@Override
protected void onCreate( Bundle savedInstanceState ) {

super.onCreate( savedInstanceState );
boolean logout = getIntent().getBooleanExtra( "logout", false );
if ( logout ) {
startActivity( new Intent( this, LoginActivity.class ) );
finish();
return;
}
//...
}

关于android - TabGroupActivity android 应用程序-退出后防止返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16693260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com