繁体   English   中英

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

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

我正在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);

    }
}

首先,如果您的类中有一个属性为public SharedPreferences.Editor editor; 为什么要在每个save方法上创建不同的Editor 同样,在logoutapp方法中,您可以使用编辑器。

我没有得到您要使用此方法执行的操作,让我们逐步进行

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);

}

首先,您要将一些存储在SharedPreferences上的值加载并存储到变量中。 然后您clear()我想您知道会从首选项中删除所有值。 调用commit后,剩下的唯一首选项将是您在此编辑器中定义的首选项。

然后,我看到一个commit()但是我看不到您正在存储它的结果,因此您只能使用apply() 然后保存以前存储的值。

我不明白的是,您是否需要从SharedPreferences删除所有数据? 我不这么认为,因为您再次存储了相同的值。 您可以使用remove(String key)删除存储在SharedPreferences中的特定项目。

另外,我想看看您如何从应用程序注销以及如何登录到应用程序以消除我的疑虑。

暂无
暂无

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

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