这是我的逻辑:
我有一位用户:
user = new User(newUsername, newPassword);
为用户生成随机ID +密码。
uniqueName = UUID.randomUUID().toString();
uniquePassword = UUID.randomUUID().toString();
使用对话框,用户可以更改密码,如下所示。
newUsername = userField.getText().toString();
newPassword = passwordField.getText().toString();
我将它传递给模特:
user.setUsername(newUsername);
user.setPassword(newPassword);
模型看起来像这样:
public User(String username,String password){
this.username = username;
this.password = password;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
public String getPassword(){
return password;
}
public void setPassword(String password){
this.password = password;
}
但是,当我关闭应用程序或更改激活密码并且用户未保存时,有关如何保存用户和密码的任何提示,以便在用户离开活动时保存密码/ ID?
我以这种方式添加了SharedPreferences:
private void savePreferences(){
SharedPreferences settings = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PREF_UNAME, newUsername);
editor.putString(PREF_PASSWORD, newPassword);
editor.commit();
}
private void loadPreferences(){
SharedPreferences settings = getSharedPreferences(PREFS_NAME,
Context.MODE_PRIVATE);
mUsername.setText(settings.getString(PREF_UNAME, newUsername));
mPassword.setText(settings.getString(PREF_PASSWORD, newPassword));
}
我在onPause()中调用savePreferences,在onResume()中调用loadPreferences。但是,当我关闭活动两次并再次打开它时,我存储的用户名和ID都消失了。还有其他提示吗?
答案 0 :(得分:1)
您没有获得价值的原因是您的数据未被存储。应用程序关闭后,您的静态数据将丢失。您需要将数据保存在Database或SharedPreference中。
您的模型只是暂时保存数据的静态方法。
答案 1 :(得分:0)
因为您将用户保存在内存中,并且需要将其保存在SharedPreference中。
答案 2 :(得分:0)
这一切都取决于它的数据量(用户ID和密码除外)
正如@Gosu所说,如果你有小数据使用SharedPrefereces
或者如果有更多的recrods和表格,那么使用SQLite
有关详细信息,请参阅:Official Site : Android Storage Options
答案 3 :(得分:0)
如果你的约束只是用户名和密码(不是用户角色和权限)那么没有太多工作的最佳方法是SharedPreferences。否则,你需要有一个像sqlite这样的数据库来维护这些信息。
答案 4 :(得分:0)
您可以使用“已保存的首选项”来保存用户。 我们可以使用gson.jar
来做到这一点 SharedPreferences mPrefs = getPreferences(MODE_PRIVATE);
保存
Editor prefsEditor = mPrefs.edit();
Gson gson = new Gson();
String json = gson.toJson("User");
prefsEditor.putString("MyObject", json);
prefsEditor.commit();
获取
Gson gson = new Gson();
String json = mPrefs.getString("User", "");
MyObject obj = gson.fromJson(json, User.class);