2

我可以通过调用Context.getSharedPreferences(String name, int mode)创建一个新的首选项文件,将一些值放入返回的首选项的编辑器中,然后提交。但是,当我不再需要创建的文件时,我在 API 中看不到删除该文件的接口。我已经尝试过Context.deleteFile(String name),从上面传入相同的name参数,但返回false,表明文件实际上没有被删除。我正在使用 MODE_PRIVATE,如果这有什么不同的话。

据我所知,浏览编辑器的上下文实现的源代码也没有透露任何线索。

有任何想法吗?这里的背景是我允许我的用户保存他们“当前”首选项的副本,以便他们可以恢复以前保存的设置。当他们不再需要这些设置时,我想删除保存的首选项文件,这样它就不会占用空间。目前我能做的最好的就是edit().clear().commit在文件上,我相信这会删除大部分内容。不过,不如删除。

4

1 回答 1

2

我试过 Context.deleteFile(String name),从上面传入同名参数,但返回 false,表明文件实际上没有被删除。

那是因为该文件不在该目录中。

这里的背景是我允许我的用户保存他们“当前”首选项的副本,以便他们可以恢复以前保存的设置。

你是如何制作副本的?

从支持的 API 的角度来看,最好将真实SharedPreferences设置为当前活动设置,并在您自己的目录中进行备份和恢复为您自己的文件格式。

如果您不愿意朝那个方向前进,那么该文件将是../shared_prefs相对于 目录中的 XML 文件getFilesDir(),因此您可以构造一个适当的 File 对象并以这种方式将其删除。但是,请记住,Android 以后可能会更改此位置,甚至更改存储模型,因此您将来可能会遇到兼容性问题。

于 2010-11-05T13:47:47.920 回答