android – 当应用程序强制关闭或设备重新启动时,共享首选项重置数据

前端之家收集整理的这篇文章主要介绍了android – 当应用程序强制关闭或设备重新启动时,共享首选项重置数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个应用程序,我在其中存储用户名和密码在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应该工作

猜你在找的Android相关文章