[英]android sharedpreferences does not save data when app restart
我有一个sharedpreference
,可以很好地保存数据直到应用程序关闭。 当应用重启时, sharedpreferences
中的数据消失了,请告诉我解决方案。 我想在应用关闭或重新启动或电话重新启动时保存我的preferences
中的数据。
public static final String MyPREF_MOB = "MyPref_mob";
public static final String WALLPAPER_MOB = "wallpaper_mob";
if(encodedImagee!=null) {
// shre1 = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor edit = shre1.edit();
edit.putString(WALLPAPER_MOB, encodedImagee);
edit.apply();
// Toast.makeText(Profile1Activity.this, "new same image in prefrences", Toast.LENGTH_SHORT).show();
}
shre1 = getSharedPreferences(MyPREF_MOB, Context.MODE_PRIVATE);
final String image_save =shre1.getString(WALLPAPER_MOB, "");
我也尝试过
if(encodedImagee!=null)
{
// shre1 = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor edit = shre1.edit();
edit.putString("mob_wallpaper", encodedImagee);
edit.commit();
// Toast.makeText(Profile1Activity.this, "new same image in prefrences", Toast.LENGTH_SHORT).show();
}
shre1 = PreferenceManager.getDefaultSharedPreferences(context);
final String image_save =shre1.getString("mob_wallpaper", "");
我已使用此代码保存数据,当应用重启时我也可以获取数据,但是当手机重启数据再次消失时
if(encodedImagee!=null)
{
// shre1 = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor edit = shre1.edit();
edit.remove("mob_wallpaper");
edit.apply();
edit.putString("mob_wallpaper", encodedImagee);
edit.apply();
// Toast.makeText(Profile1Activity.this, "new same image in prefrences", Toast.LENGTH_SHORT).show();
}
shre1 = PreferenceManager.getDefaultSharedPreferences(context);
final String image_save =shre1.getString("mob_wallpaper", "");
尝试这个,
SharedPreferences sharedPreferences = getSharedPreferences("preference_name", Context.MODE_PRIVATE);
if (encodedImagee != null){
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString("mob_wallpaper", encodedImagee);
edit.commit();
}else{
final String image_save = sharedPreferences.getString("mob_wallpaper","");
// put your logic over here
}
我从您的示例代码中假设您使用了
PreferenceManager.getDefaultSharedPreferences
用于读取 getSharedPreferences(MyPREF_MOB, Context.MODE_PRIVATE)
用于编写 我认为您在两种情况下都应使用相同的内容。
尝试更换
shre1 = getSharedPreferences(MyPREF_MOB, Context.MODE_PRIVATE);
通过
shre1 = PreferenceManager.getDefaultSharedPreferences(context);
//get the preference instance with this
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
// acccess a saved key value
mPrefs.getString("key", "default_value");
//save a key-value
mPrefs.edit().putString("key", "new_value").apply();
以这种方式修改您的代码:
@Override
public void onCreate(.....){
super.onCreate(......);
setContentView(R.layout.your_layout_xml);
shre1 = getSharedPreferences(MyPREF_MOB, Context.MODE_PRIVATE);
final String image_save =shre1.getString(WALLPAPER_MOB, "");
以及何时要更新图像
if(encodedImagee!=null) {
// shre1 = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor edit = shre1.edit();
edit.putString(WALLPAPER_MOB, encodedImagee);
edit.commit(); //make use of commit
// Toast.makeText(Profile1Activity.this, "new same image in prefrences", Toast.LENGTH_SHORT).show();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.