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

标签 java android odoo

我正在开发ODOO基础应用程序并将用户详细信息存储到ODOO服务器,但无法从我必须从Android端管理的服务器进行登录和注销,所以我已从 Android 端使用 session 管理。首先,我已成功登录到我的应用程序,但是当第二次登录时,但详细信息获取了第一个用户。如何使用 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 > 方法?另外,在 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 中的特定项目。

我还想看看你们如何退出应用程序以及如何登录应用程序以消除我的疑虑。

关于java - 当我从服务器获取数据时,无法从 Android 端设置登录注销 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57551834/

相关文章:

java - 在 Java 中将基元数组转换为容器数组

database - 需要上下文的 Android 单元测试

java - Android - 我的应用程序中的位置监听器

odoo - 相关用户在自定义模块中与 odoo 9 中的用户和员工链接?

python - 在 Odoo 中获取当前加载的语言翻译

java - 执行单个命令并退出 Spring Shell 2

java - 使用 TableMapReduceUtil 和 MultipleOutputFormat 时在 Job 和 JobConf 之间挣扎

java - 有没有办法为房间持久性库创建通用 DAO 类

java - Android Studio - Java 库上的 MinSdkVersion

javascript - Odoo8 网站将输入值从产品页面转移到购物车页面