重启后Android应用程序共享首选项为空

时间:2013-04-28 17:13:20

标签: caching sharedpreferences

我有一个奇怪的问题,看起来像一个简单的应用程序创建(一个总是在寻找麻烦的想法)。

应用程序基本上以MainActivity开头,用户用来“登录”应用程序。如果成功MainActivity使用ItemzList转到下一个活动startActivity。这一切都运行良好,一旦ItemzList启动,它会使用ListView中的字符串列表填充其SharedPreferences

再次这很好用。但是,如果您按下“主页”按钮,然后重新启动应用程序,当ItemzListSharedPreferences加载列表时,列表突然变空(我已通过调试器和我的确认装置)。

我知道它与缓存的应用程序有关,因为如果我'强制停止'应用程序,然后重新启动列表再次工作。

我是否错误地访问了共享偏好设置?

SharedPreferences settings = getSharedPreferences("MAIN", MODE_PRIVATE);
Set<String> tempSet = settings.getStringSet("LIST", new HashSet<String>());

2 个答案:

答案 0 :(得分:0)

发现错误。我处理了Set tempSet然后清除了tempSet(无法回想起那个背后的推理)。

    SharedPreferences settings = getSharedPreferences("MAIN", MODE_PRIVATE);
    Set<String> tempSet = settings.getStringSet("LIST", new HashSet<String>());
    ArrayList<String> stringsEnc = new ArrayList<String>(tempSet);
    tempSet.clear(); //This is the erroneous line

我想清除'tempSet'有些如何清除sharedPreferences对象中的列表(但不是XML文件本身),所以如果应用程序被缓存,下一次调用'getSharedPreferences'只会重用缓存版本(具有清除列表?)无论如何删除该行修复了问题。

答案 1 :(得分:0)

最后我找到了一个解决方案,只需将你的prefs代码放在异步任务中就可以了,我不知道为什么会这样,但是它会起作用。

s2 + s1
        prefss = getSharedPreferences(ACCOUNT_PREFS_NAME, MODE_MULTI_PROCESS);

                new AsyncSave(favNamesList).execute();