简体   繁体   English

当我从服务器获取数据时,无法从Android端设置登录注销会话

[英]can not set login logout session from android side when i am fetch data from server

i am work on ODOO base application and store user details to ODOO server but can not do login and logout from server that i have to manage from android side so i have use session management from android side.First i have login to my application login successfully but when second time login but details fetch of first user.how to logout from server side using android. 我正在ODOO基本应用程序上工作并将用户详细信息存储到ODOO服务器,但无法从必须从android端进行管理的服务器登录和注销,因此我已经从android端使用了会话管理。首先我已成功登录到我的应用程序登录名但是当第二次登录但详细获取第一个用户时。如何使用android从服务器端注销。

public class SharedPref {

    public SharedPreferences pref;
    public SharedPreferences.Editor editor;


    public SharedPref(Context context) {
        this.pref = context.getSharedPreferences("P1m2h3spellbound", Context.MODE_PRIVATE);

    }


    public void
    save(String key, String value) {
        // TODO Auto-generated method stub
        SharedPreferences.Editor editor = pref.edit();
        editor.putString(key, value);
        editor.commit();
    }

    public void save(String key, Boolean value) {
        // TODO Auto-generated method stub
        SharedPreferences.Editor editor = pref.edit();
        editor.putBoolean(key, value);
        editor.commit();
    }

    public void save(String key, int value) {
        // TODO Auto-generated method stub
        SharedPreferences.Editor editor = pref.edit();
        editor.putInt(key, value);
        editor.commit();
    }

    public int load(String key, int def) {
        // TODO Auto-generated method stub
        int i = pref.getInt(key, def);
        return i;
    }

    public String load(String key, String def) {
        // TODO Auto-generated method stub
        String strSaved = pref.getString(key, def);
        return strSaved;
    }

    public Boolean load(String key, boolean def) {
        // TODO Auto-generated method stub
        boolean isbool = pref.getBoolean(key, def);
        return isbool;
    }

    public void logoutapp() {
        // TODO Auto-generated method stub
        SharedPreferences.Editor editor = pref.edit();
        boolean isZoomGuide = load("isZoomGuide", false);
        String ip = load("server_ip", "");
        String port = load("server_port", "");
        String db = load("server_db", "");
        editor.clear();
        editor.commit();

        save("isZoomGuide", isZoomGuide);
        save("server_ip", ip);
        save("server_port", port);
        save("server_db", db);
        save("isServer", true);

    }
}

First, if you have an attribute in your class as public SharedPreferences.Editor editor; 首先,如果您的类中有一个属性为public SharedPreferences.Editor editor; why are you creating a different Editor on every save method? 为什么要在每个save方法上创建不同的Editor Also in the logoutapp method you can use your editor. 同样,在logoutapp方法中,您可以使用编辑器。

I'm not getting what you are trying to do on this method, let's go step by step 我没有得到您要使用此方法执行的操作,让我们逐步进行

public void logoutapp() {
    // TODO Auto-generated method stub
    SharedPreferences.Editor editor = pref.edit();
    boolean isZoomGuide = load("isZoomGuide", false);
    String ip = load("server_ip", "");
    String port = load("server_port", "");
    String db = load("server_db", "");
    editor.clear();
    editor.commit();

    save("isZoomGuide", isZoomGuide);
    save("server_ip", ip);
    save("server_port", port);
    save("server_db", db);
    save("isServer", true);

}

First you want to load and store some values stored on SharedPreferences into a variables. 首先,您要将一些存储在SharedPreferences上的值加载并存储到变量中。 Then you clear() I guess you know will remove all values from the preferences. 然后您clear()我想您知道会从首选项中删除所有值。 Once commit is called, the only remaining preferences will be any that you have defined in this editor. 调用commit后,剩下的唯一首选项将是您在此编辑器中定义的首选项。

Then I see a commit() but I'm not seeing you are storing its result, so you just can use apply() . 然后,我看到一个commit()但是我看不到您正在存储它的结果,因此您只能使用apply() And then you save the values stored previously. 然后保存以前存储的值。

What I don't get is, do you need to remove all data from SharedPreferences ? 我不明白的是,您是否需要从SharedPreferences删除所有数据? I don't think so, since you are storing the same values again. 我不这么认为,因为您再次存储了相同的值。 You can use remove(String key) to remove a specific item stored in your SharedPreferences . 您可以使用remove(String key)删除存储在SharedPreferences中的特定项目。

Also I'd like to see how do you Log out from the app and how you Log in to the app to clear my doubts. 另外,我想看看您如何从应用程序注销以及如何登录到应用程序以消除我的疑虑。

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

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