不是删除不掉,而是再次重生。
写了一个单独的程序进行测试,测试结论如下:
- 删除掉文件后完全退出软件不会重生;
- pres = getSharedPreference以及edit = pres.edit不会生成文件;
- 每当调用apply或者commit时,文件就会重生,而且是之前删除的样子,如果之前并没有生成过这个文件,那么apply会生成一个空文件;
- 删除掉文件后,哪怕pres赋值了其他对象,edit.commit也会再次生成原文件;
- pres赋值新对象后执行 edit = pres.edit()后再运行commit会生成新pres的文件;
- 删除掉文件后,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;
另外, 在删除前短时间内执行过写操作, 那么删除不会成功;