首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进程终止后的SharedPreferences重置

进程终止后的SharedPreferences重置
EN

Stack Overflow用户
提问于 2014-04-28 22:04:01
回答 2查看 1.4K关注 0票数 0

是的,我知道这里有很多这样的问题,但我还没有找到一个有效的。

在过去的30分钟左右,我一直在玩SharedPreferences,到目前为止,保存的值没有任何问题,但当你通过长时间按下后退按钮或使用任务管理器来终止进程并重新启动应用程序时,它将恢复为默认值。

现在默认值是50,就像我正在做的均衡器一样,并且有一个扁平/重置按钮

所以,基本上我该如何保存这些值,并保存它们?!

以下是我的各种尝试:

尝试1:

代码语言:javascript
复制
     private int isFirstTime()
{
    SharedPreferences sp = getSharedPreferences("sliders", MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++) {
        editor.putInt("sliders",  sliders[i].getProgress());
        editor.putInt("bass_boost", bass_boost.getProgress());
        editor.commit();
    }
    return num_sliders;


}

尝试2:

代码语言:javascript
复制
  public int saveProgress(){
SharedPreferences sp = getSharedPreferences("sliders2", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("sliders",  sliders[0].getProgress());
editor.putInt("sliders2", sliders[1].getProgress());
editor.putInt("sliders3", sliders[2].getProgress());
editor.putInt("sliders4", sliders[3].getProgress());
editor.putInt("sliders5", sliders[4].getProgress());
editor.putInt("sliders6", sliders[5].getProgress());
editor.putInt("sliders7", sliders[6].getProgress());
editor.putInt("sliders8", sliders[7].getProgress());
editor.putInt("sliders9", sliders[8].getProgress());
editor.putInt("sliders10", sliders[9].getProgress());
editor.putInt("bass_boost", bass_boost.getProgress());
editor.commit();
return min_level - max_level;
}

尝试3:

代码语言:javascript
复制
  public int getProgress(){

 SharedPreferences sp = getSharedPreferences("sliders", MODE_PRIVATE);
 for (int i = 0; i < num_sliders && i < MAX_SLIDERS; i++) {
     num_sliders = sp.getInt("sliders", 0);
 }
 num_sliders = sp.getInt("bass_boost", 0);
 return num_sliders;
 }

尝试4:

代码语言:javascript
复制
   public int getProgress2(){

    SharedPreferences sp = getSharedPreferences("sliders",   Activity.MODE_PRIVATE);
     num_sliders = sp.getInt("sliders1", -1);
     num_sliders = sp.getInt("sliders2", -1);
     num_sliders = sp.getInt("sliders3", -1);
     num_sliders = sp.getInt("sliders4", -1);
     num_sliders = sp.getInt("sliders5", -1);
     num_sliders = sp.getInt("sliders6", -1);
     num_sliders = sp.getInt("sliders7", -1);
     num_sliders = sp.getInt("sliders8", -1);
     num_sliders = sp.getInt("sliders9", -1);
     num_sliders = sp.getInt("sliders10", -1);
     num_sliders = sp.getInt("bass_boost", -1);
     return num_sliders;
}

任何帮助将非常感谢,因为我需要得到的应用程序更新推出!

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-06-03 17:33:27

我知道这是一个古老的问题,但我只是在这个问题上浪费了两个小时,如果有人遇到同样的问题,不妨给出我的答案。

为了让设置在应用程序终止/设备重启过程中正常运行,我必须做的是:

使用编辑器删除新value

  • Commit

中的旧value

  • Commit

  • Put

所以,举个例子:

代码语言:javascript
复制
SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove(Constants.PREF_STARTED_EXPERIMENTS);
        editor.commit();

        editor.putStringSet(Constants.PREF_STARTED_EXPERIMENTS, experiments);
        editor.commit();

希望这能节省一些人的时间。

票数 1
EN

Stack Overflow用户

发布于 2014-04-28 22:24:00

问题可能是将空值保存到您的首选项文件中。如果this answer解决了您的问题,请尝试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23343235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档