关于SharedPreferences文件删除不掉的问题

不是删除不掉,而是再次重生。


写了一个单独的程序进行测试,测试结论如下:

  1. 删除掉文件后完全退出软件不会重生;
  2. pres = getSharedPreference以及edit = pres.edit不会生成文件;
  3. 每当调用apply或者commit时,文件就会重生,而且是之前删除的样子,如果之前并没有生成过这个文件,那么apply会生成一个空文件;
  4. 删除掉文件后,哪怕pres赋值了其他对象,edit.commit也会再次生成原文件;
  5. pres赋值新对象后执行 edit = pres.edit()后再运行commit会生成新pres的文件;
  6. 删除掉文件后,pres对象所存的内容是不会变的,所以哪怕再次edit=pres.edit(),edit.commit也会生成原来的文件。

综上所述:日后再次删除SharedPreferences时一定要确保后续操作中没有再次执行原来对象的edit.commit/apply,否则必定重生,可以在执行commit的时候加一个判断:if(file.exit())。


后发现一个重要问题:getSharedPreferences(“xx”, Activity.MODE_PRIVATE) 这种方式创建的pres对象不会随着其他进程中对xx的操作而改变内容,如果多个进程同时对同一个xml文件操作时,请用Activity.MODE_MULTI_PROCESS;


另外, 在删除前短时间内执行过写操作, 那么删除不会成功;

    原文作者:叽哩叽哩鸡
    原文地址: https://blog.csdn.net/j550341130/article/details/47144741
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞