来自helper类的sharedPreference

时间:2011-03-21 11:22:59

标签: android static sharedpreferences

我有一个应用程序,我将信息数据存储在sharedPreference中 我想创建一个静态类,它将保存来自sharedPreference(get和set)的数据,因此我不必每次都调用sharedPreference(性能问题) 静态助手类没有引用sharedPreference,有没有办法得到它而不将调用活动作为参数传递? 也许是getParent()?或getContext()?

5 个答案:

答案 0 :(得分:4)

我认为你有2种方法可以做到:

  • 您可以在所有静态方法的参数中传递Context。然后使用context.getSharedPreferences()

  • 创建一个静态init方法,用于记录班级静态字段中SharedPreferences的数据。

根据我的观点,我更喜欢n°1,因为在n°2中你必须调用init并在每次在SharedPreferences

中添加新数据时修改它

答案 1 :(得分:1)

考虑为此目的实现Singleton类。我不确定共享偏好是否存在性能问题。

使用单例类,您可以存储与共享首选项(字符串)相比较的对象。

答案 2 :(得分:1)

另一种方法是编写自己的MyApplication extends Application,您可以在整个应用程序的范围内存储您想要的任何内容,并定义您想要的任何“静态”方法。您可以通过(MyApplication)yourActivityInstance.getApplication()访问它。

答案 3 :(得分:0)

您将以某种方式将Context传递给静态类,最好是应用程序上下文。我建议你覆盖onCreate()类的Application方法(你需要将其子类化)并将静态类中的上下文引用设置为getApplicationContext()。这样,您可以从任何其他应用程序组件(ActivityService,...)访问共享首选项访问器,而无需每次都提供Context

答案 4 :(得分:0)

这有点晚了,但这是我创建的一种简单方法。

不是每次为每个项目都创建自己的SharedPreferences Helper类,而是使用我创建的开源库,让生活更简单。

Android-SharedPreferences-Helper

添加此依赖项并开始使用

dependencies {
    ...
    ...
    compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}

<强>用法

检查存储库页面,了解有关使用高级功能的详细信息。