SharedPreferences 不保值
Posted
技术标签:
【中文标题】SharedPreferences 不保值【英文标题】:SharedPreferences not keeping value 【发布时间】:2013-05-14 09:00:22 【问题描述】:使用 SharedPreferences,我想保存一个值(这将是最后一次更新的日期之后)并加载它。在我关闭手机或强制关闭我的应用程序之前,它运行良好。它会重置值。
代码如下:
public class feedPlayer extends Activity
public final static String PARAM_USERDETAILS="userdetails";
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
loadvars();
savevars();
public void savevars()
SharedPreferences parametres = this.getSharedPreferences(PARAM_USERDETAILS, MODE_PRIVATE);
Editor edit = parametres.edit();
edit.clear();
//Global.Maj = "maj"
TextView maj=(TextView) findViewById(R.id.datemaj);
edit.putString("gimli", Global.MAJ);
edit.commit();
maj.setText(Global.MAJ);
public void loadvars()
SharedPreferences parametres = this.getSharedPreferences(PARAM_USERDETAILS, MODE_PRIVATE);
TextView maj=(TextView) findViewById(R.id.datemaj);
String Smaj = parametres.getString("gimli", Global.MAJ);
maj.setText(Smaj);
【问题讨论】:
尝试在 onPause 方法中调用 loadvars 吗? 您的代码的复制粘贴在模拟器中对我来说效果很好(即使在强制关闭活动之后)。你是在设备上测试吗?哪一个? 【参考方案1】:使用 onCreate() 方法加载数据,使用 onDestroy() 方法保存数据:
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
loadvars();
@Override
protected void onDestroy()
super.onDestroy();
savevars();
您也可以使用:onResume() 和 onPause() 方法,但这两种方法是为进程保留的(在 onResume() 方法中启动进程,在 onPause() 方法中停止进程)
【讨论】:
@omnisius:了解活动的生命周期很重要;) 是的,你是对的!我只是没想到哈哈!祝您有美好的一天,再次感谢您的回答! @omnisius:谢谢,你也是【参考方案2】:每次创建活动时,您都会调用 savevars() 方法。这意味着每次您的应用程序启动时。
在这种方法中,您总是在首选项中写入相同的值:
edit.putString("gimli", Global.MAJ);
edit.commit();
【讨论】:
以上是关于SharedPreferences 不保值的主要内容,如果未能解决你的问题,请参考以下文章