删除文件后,Android DefaultSharedPreference会保留值

时间:2016-12-23 05:53:43

标签: java android sharedpreferences

long t = System.currentTimeMillis();
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sp.edit();
editor.putLong("CurrentTime", t);
editor.apply();
File f = new File("/data/data/<mypackage>/shared_prefs/<mypackage>_preferences.xml");
boolean b = f.delete();
if (b == false)
    Trace.i("Hello", "we did not delete it");
else
    Trace.i("Hello", "we deleted it");
Trace.i("Hello","Reading" +Long.toString(sp.getLong("CurrentTime", 0)));

日志是:

I/Hello : We deleted it
I/Hello : Reading 1482471022197

所以预期的结果应该是读0 ,我在这里做错了什么?

3 个答案:

答案 0 :(得分:0)

您删除了“文件未共享”偏好设置。要了解共享首选项的工作方式,请参阅此基本教程:https://www.tutorialspoint.com/android/android_shared_preferences.htm

答案 1 :(得分:0)

创建SharedPreferences的实例时,会从文件中提取共享首选项。因此值被缓存在内存中。因此,如果删除该文件,则仍会缓存值。要删除SharedPreferences文件,您需要重新创建SharedPreferences

的实例

答案 2 :(得分:0)

不要删除SharedPreferences文件。

而不是尝试下面的代码:

sp.edit().clear();
sp.edit().commit();