我有一个应用程序,我将信息数据存储在sharedPreference中 我想创建一个静态类,它将保存来自sharedPreference(get和set)的数据,因此我不必每次都调用sharedPreference(性能问题) 静态助手类不具有对sharedPreference的引用,是否有任何方法可以在不传递调用活动作为参数的情况下获取它? 也许getParent()?或getContext()?sharedPreference from助手类
回答
我认为你有2种方法来做到这一点:
你可以在你的所有静态方法的参数传递一个
Context
。然后只需使用context.getSharedPreferences()
。创建一个静态的
init
方法,将您的SharedPreferences
的数据记录到您班级的静态字段中。
对于我的角度来说,我更喜欢N°1,因为在N°2你必须调用init
,每次修改它,你在SharedPreferences
考虑实施一个Singleton类用于此目的。我不确定sharedpreference是否存在性能问题。
用一个单独的类,你可以存储对象相比,共享偏好(串)。
添加新的数据你会以某种方式必须通过Context
到您的静态类,最好是应用程序上下文。我建议你重写Application
类(你会需要它的子类),并在静态类中的上下文引用从那里设置getApplicationContext()
的onCreate()
方法。这样,您可以从任何其他应用程序组件(Activity
,Service
,...)访问共享首选项访问器,而无需每次都提供Context
。
您永远不想保留对Activity的静态引用。这将是创建一个可怕的内存泄漏的好方法。您可以使用context.getApplicationContext()创建一个到ApplicationContext的静态引用; – 2012-09-12 00:26:54
......这正是我所说的。 – user634618 2012-09-12 09:41:14
另一种方式是写自己的MyApplication extends Application
,在那里你可以存储任何你在整个应用程序的范围要和定义任何你想要的“静态”的方法。您可以通过(MyApplication)yourActivityInstance.getApplication()
访问它。
这是有点晚了,但这里有一个简单的方法,我创建。
而不是每次创建自己的SharedPreferences帮助类每个项目你可以使用这个开源库我创建并使生活更简单。
Android-SharedPreferences-Helper
添加这种依赖,并开始:
dependencies {
...
...
compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar')
}
使用
检查库页有关使用高级功能的详细信息。
- 1. SharedPreference:如何创建sharedPreference类
- 2. Android DB助手类
- 3. c#:IsNullableType助手类?
- 4. 使用sharedpreference帮助登录活动
- 5. Android,SharedPreference在手机重启时丢失
- 6. 一类在Rails助手
- 7. Mockito的嘲笑助手类
- 8. 助手或类的方法
- 9. sql助手类的混淆
- 10. C++ Builder中的类助手
- 11. Ramda类型检查助手
- 12. 助手类没有从View
- 13. Vb.net中介助手类
- 14. Xamarin表格:MasterPage助手类
- 15. .Net类助手方法
- 16. 活动目录助手类
- 17. 助手内呼叫助手
- 18. PostgreSQL COPY FROM命令帮助
- 19. .htaccess DENY FROM ALL帮助?
- 20. sharedpreference handling
- 21. HTML助手与HTML助手内
- 22. 无法检索sharedpreference
- 23. Singleton SharedPreference Android
- 24. Alamofire的请求管理器助手类
- 25. 使用助手类访问ActionExecutingContext
- 26. MVC 4的link_to助手(类似轨)
- 27. Wordpress中的助手类如何工作?
- 28. 什么是助手类和脚本?
- 29. Django项目助手函数/类
- 30. HTML助手类方法不起作用
我看到了由getter/setter方法直接访问共享偏好没有任何问题了。 – ernazm 2011-03-21 11:43:47
SharedPreferences实际上是一个Singleton类,当您调用getSharedPreferences时,您实际上只会获得一个实例,并且在获得共享首选项的调用数量方面不存在性能损失 – Coderji 2016-04-28 21:42:34