Java 注销似乎并不是真正注销

Java 注销似乎并不是真正注销,java,android,login,sharedpreferences,Java,Android,Login,Sharedpreferences,我正在开发一个android应用程序,其中用户需要注册/登录,但当用户要注销时,这项功能运行良好,这就是问题所在 当前,当用户按下注销按钮时,它会将他们带回登录页面,但是如果您离开应用程序,然后返回应用程序(因此它仍在内存中),则不会再次登录,而是会将您带回登录后看到的页面 我使用SharedReference记录了用户是否登录,然后进行了启动活动,这是决定显示哪个屏幕的第一步: public class Splash extends SherlockActivity { public

我正在开发一个android应用程序,其中用户需要注册/登录,但当用户要注销时,这项功能运行良好,这就是问题所在

当前,当用户按下注销按钮时,它会将他们带回登录页面,但是如果您离开应用程序,然后返回应用程序(因此它仍在内存中),则不会再次登录,而是会将您带回登录后看到的页面

我使用SharedReference记录了用户是否登录,然后进行了启动活动,这是决定显示哪个屏幕的第一步:

public class Splash extends SherlockActivity {
    public static final String PREFS_NAME = "PrefsFile";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        boolean loggedin = settings.getBoolean("loggedIn", false);
        if (loggedin){
            Intent intent = new Intent(this, MyLists.class);
            startActivity(intent);
        }
        else{
            Intent intent = new Intent(this, LogIn.class);
            startActivity(intent);
        }
    }
}

然后我的注销按钮看起来像

private OnClickListener OnClick_logout = new OnClickListener() {
        public void onClick(View v) {
            SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("loggedIn", false);
            editor.putString("email", "");
            editor.putString("password", "");
            editor.commit();
            db.clearLists();
            db.clearProducts();
            Intent intent = new Intent(v.getContext(), Splash.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            v.getContext().startActivity(intent);
        }
    };

按下按钮后,“启动”活动当前会将用户带到登录屏幕,但正如我所说的,如果随后关闭应用程序并返回,则会将用户带到“MyList”活动。

您需要使用意图标志来清除堆栈历史记录。在您导航回登录屏幕之前,请说

intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK | intent.FLAG_ACTIVITY_CLEAR_TASK)

intent.setFlags(intent.FLAG\u活动\u否\u历史记录)

然后单击backbutton,您的应用程序退出

还要确保将sharepreference变量刷新为零或调用System.exit()

注意:调用system.exit()会让用户在每次使用应用程序时登录


希望这对您有所帮助。

您的问题是什么?如果随后关闭应用程序并返回,用户将进入“MyList”活动。在没有实际登录的情况下,你发布了
LogIn.java
中的代码?因此,如果我在注销按钮中添加这些标志,它应该会起作用,或者?是的,请尝试告诉我它仍然做同样的事情,当你回到应用程序时,它会直接进入MyList活动