如何安全地声明不存在共享首选项

时间:2011-08-07 09:47:13

标签: android caching preferences assert sharedpreferences

我试图找出如何安全断言偏好不会存储在任何地方。似乎还没有理解缓存机制,文档也没有澄清它。这就是我所做的:

File prefsFile = new File("/data/data/"+context.getPackageName() + "/shared_prefs/"
    + context.getPackageName() + "_preferences.xml");
prefsFile.delete();
assertFalse(prefsFile.exists()); // success

// This assertion could fail - why?
assertEquals(0, context.getSharedPreferences(context.getPackageName()+"_preferences",
    MODE_PRIVATE).getAll().size());

虽然我删除了prefs文件,但getAll().size()仍然可能返回非零值。

有人可以解释原因吗?

1 个答案:

答案 0 :(得分:2)

  

我试图找出如何安全地断言偏好不会存储在任何地方。

为什么?

  

有人可以解释原因吗?

脱离我的头顶:

  • 在删除文件之前,或者目录是否存在
  • ,您实际上并未测试该文件是否存在
  • 您正在对所有设备上可能不正确的路径进行硬编码
  • 您假设删除文件会删除SharedPreferences
  • 的进程内副本
  • 您不必费心查看HashMap返回的getAll(),看看您的数据是否存在,或者是否是某些系统提供的初始值

如果要清除SharedPreferences,请不要尝试删除该文件。在edit().clear().commit()对象上拨打edit().clear().apply()SharedPreferences