处理存储在库中的共享首选项

时间:2010-08-13 20:30:19

标签: android sharedpreferences

我有一个免费和付费版本的应用。我将所有免费版本代码放入一个库,我从一个新的免费版本项目和付费版本项目中引用它。

我注意到库,现在我的项目都有一个属性文件,我的偏好完全停止了。看起来,根据代码执行的命名空间,当您查询SharedPreferences时,它会得到不同的结果。

处理此问题的最佳方法是什么?这两个应用程序都具有与现在相同的首选项,但我可能会在以后扩展付费版本并添加免费版本中不存在的首选项。

1 个答案:

答案 0 :(得分:3)

我假设您在询问您的图书馆是否可以与顶级应用共享首选项,而不是免费版本是否可以与完整版共享。

api文档提到你不能在给定进程之外共享prefs,所以有可能因为你(可能)有两个不同的包(一个用于lib,一个用于顶层),你得到的prefs在图书馆和顶级应用程序中来自不同的文件?

您可以通过浏览/ data / data / your-package中的手机存储来查看顶级应用和库的首选项文件。您可能会发现每个文件都有不同的首选项文件,我认为这意味着您无法在库/应用程序之间共享首选项。

您可以通过从顶级应用程序读取和写入prefs,以及创建用于将这些prefs传递到库的接口来解决这些限制。如果您的图书馆只是显示了顶层的值,那么图书馆将不必访问prefs,因此您的所有首选项访问都是在一个地方完成的。

此外,这将允许您具有完全与免费的不同首选项(无论如何这是默认行为,因为它们将存储在单独的首选项文件中),然后您可以将适当的信息发送到基于lib的在版本上。