我正在使用 SharedPreferences 为用户管理一种“会话”并让他们保持登录状态,直到他们明确按下注销,也就是我从 SharedPreferences 中删除所有内容的时候。
当用户登录时,我这样做:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( LoginActivity.this);
prefs.edit()
.putString("first_name", firstName)
.putString("last_name", lastName)
.putString("email", email)
.putString("user_id", user_id)
.commit();
它 90% 的时间都在工作,但每隔一段时间,这些东西就不会被写入 SharedPreferences,导致系统永远不会将用户视为已登录。
知道为什么会发生这种情况吗?这是某些手机的安全问题吗?
注意:当远程服务器在将数据实际添加到数据库后做出响应时,我将这些值放入 SystemPreferences 中,即使将数据添加到数据库中,这些值也不会保存在某些设备上。
这是获取首选项的代码:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences( ProblemioActivity.this);
String firstName = prefs.getString( "first_name", null); // First arg is name and second is if not found.
String lastName = prefs.getString( "last_name", null); // First arg is name and second is if not found.
String email = prefs.getString( "email", null); // First arg is name and second is if not found.
String user_id = prefs.getString( "user_id", null ); // First arg is name and second is if not found.
谢谢!!