我正在开发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/