【发布时间】:2013-03-12 05:23:39
【问题描述】:
我正在开发一个应用程序,其中我将username 和password 存储在SharedPreferences 中。一切对我来说都很好,存储和检索值。但我发现当我重新启动设备或应用程序被强制关闭时,存储在SharedPreferences 中的值被重置。当我再次启动我的应用程序时,我在 SharedPreferences 键中得到空值。这是我为存储值所做的:
SharedPreferences emailLoginSP;
emailLoginSP = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
emailLoginSP.edit().putString("prefEmailId", email_text).commit();
emailLoginSP.edit().putString("prefUserId", userIDToken).commit();
emailLoginSP.edit().putString("prefAccess_token", accessToken).commit();
Intent i = new Intent(LoginWithEmail.this,UserInfoActivity.class);
i.putExtra("acess_token", accessToken);
i.putExtra("user_id", userIDToken);
i.putExtra("emailID", email_text);
startActivity(i);
而且,这就是我正在重新尝试它的方式:
SharedPreferences emailLoginSP = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
loginEmail = emailLoginSP.getString("prefEmailId", null);
loginUserId = emailLoginSP.getString("prefUserId", null);
loginAccessToken = emailLoginSP.getString("prefAccess_token", null);
到目前为止,一切正常。 我再次说明我的问题,即当我强制关闭或重新启动设备时我得到空值。我们可以将其永久存储在应用程序内存中吗?或者,我在这里做错了什么?
任何帮助将不胜感激。
【问题讨论】:
-
当您在 SP 中存储值后重新启动设备时,它不会返回
NULL,看来您还有其他问题。能告诉我们你在哪里逼近吗? -
我没有强行关闭。我已通过设置->应用程序强制停止该应用程序并从那里强制停止它。当我同时重新启动手机或强制停止它时,我的值将变为空。
-
@Anupam 我下面的解决方案将保留强制停止中的值,当您重新启动设备等时。
SharedPreferences将值存储到 XML,因此无论应用程序如何被销毁它们都将永远是保留stackoverflow.com/questions/6146106/…您使用的存储或检索代码一定有问题 -
事实证明这也可能是由无效的首选项键引起的,例如包含换行符的键:stackoverflow.com/questions/28385132/…