android - SharedPreferences 的应用程序上下文?

标签 android sharedpreferences

我可以使用 ApplicationContext 来处理 SharedPreferences 并启动例如 RemoteService 吗?

从逻辑上讲,我认为我可以。这种方法有什么细微差别吗?

最佳答案

正如 Gunnar Karlsson 提到的 ContextWrapper 的 getApplicationContext()用法很清楚,您应该只使用 ActivityService Context注册/取消注册您的接收器,绑定(bind)/取消绑定(bind)您的服务(除非确实需要注册静态数据,而不是特定组件)以避免不确定的内存泄漏,并且即使您有时忘记取消注册也是安全的,系统将清除它

但是,对于 getSharedPreferences(...),您始终可以使用任何 ApplicationContextContext顺利。 reason就是,已经明确提到了

For any particular set of preferences(here SharedPreferences), there is a single instance of this class that all clients share.

仅通过应用程序上下文获取引用不会永远保留该引用。它只是通过应用程序上下文对首选项的引用,就像其他任何东西一样。所以一旦用户完成它就会被清除。

请注意,通过应用程序上下文注册接收器将被维护为与您的应用程序关联的全局状态。所以它永远不会为你清除。

如果我错了,请有人纠正我。

希望这会对你有所帮助。

关于android - SharedPreferences 的应用程序上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9109073/

相关文章:

flutter - 如何使用共享首选项保存 bool 值

java - 在 PreferenceActivity 中隐藏首选项

android - 如何在 JNI 中将 char[] 转换为 jstring?

android - Volley Android 网络库

适用于 Lollipop 及以上版本的 Android 照片选择器

android - 在开发和生产上切换 GCM 客户端

java - 备份/恢复共享首选项android

android - 按下时按钮背景更改布局

android - 具有相同 sharedUserId 的应用程序之间的 Sharedpreference

android - 如何强制 SharedPreferences 保存?