我有一个应用程序,我将信息数据存储在sharedPreference中 我想创建一个静态类,它将保存来自sharedPreference(get和set)的数据,因此我不必每次都调用sharedPreference(性能问题) 静态助手类没有引用sharedPreference,有没有办法得到它而不将调用活动作为参数传递? 也许是getParent()?或getContext()?
答案 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()
。这样,您可以从任何其他应用程序组件(Activity
,Service
,...)访问共享首选项访问器,而无需每次都提供Context
。
答案 4 :(得分:0)
这有点晚了,但这是我创建的一种简单方法。
不是每次为每个项目都创建自己的SharedPreferences Helper类,而是使用我创建的开源库,让生活更简单。
Android-SharedPreferences-Helper
添加此依赖项并开始使用
dependencies {
...
...
compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}
<强>用法强>
检查存储库页面,了解有关使用高级功能的详细信息。