我正在开发一个应用程序,我在其中存储用户名和密码在SharedPreferences中.所有的东西都适合我,存储以及检索值.但我发现当我重启设备或强制关闭app时,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);
到目前为止,所有的事情都很好.
我再次说明我的问题,当我强制关闭或重启我的设备时,我得到空值.我们可以将它永久存储在应用程序内存中吗?或者,我在这里做错了什么?
任何帮助将不胜感激.
解决方法
我有一个登录屏幕,希望应用程序看起来好像在应用程序关闭/销毁/电话呼叫等后仍然在内部屏幕上“登录”.
我有一个首选项对象来保存登录或注册后的值.我在所有关键屏幕onResume()方法中读取了首选项值.
登录后(例如):
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(activity);
SharedPreferences.Editor editor = app_preferences.edit();
editor.putString("sessionId",application.currentSessionId);
editor.putString("userId",application.currentUserId);
editor.putString("userEmail",application.currentUserEmail);
editor.putString("siteUserId",application.currentSiteUserId);
editor.commit();
在活动的onResume()内:
(即在内部屏幕内)
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(activity);
application.currentSessionId = app_preferences.getString("sessionId","");
application.currentUserId = app_preferences.getString("userId","");
application.currentUserEmail = app_preferences.getString("userEmail","");
application.currentSiteUserId = app_preferences.getString("siteUserId","");
注意.我有应用程序“全局”变量,即application.currentSessionId,你可以只替换你的变量
尝试类似的东西,也许你没有保存或正确检索值,因为SharePreferences应该工作