我可以使用 ApplicationContext
来处理 SharedPreferences
并启动例如 RemoteService
吗?
从逻辑上讲,我认为我可以。这种方法有什么细微差别吗?
最佳答案
正如 Gunnar Karlsson 提到的 ContextWrapper 的 getApplicationContext()用法很清楚,您应该只使用 Activity
或 Service
Context 来注册/取消注册您的接收器,绑定(bind)/取消绑定(bind)您的服务(除非确实需要注册静态数据,而不是特定组件)以避免不确定的内存泄漏,并且即使您有时忘记取消注册也是安全的,系统将清除它
但是,对于 getSharedPreferences(...)
,您始终可以使用任何 ApplicationContext
或 Context
顺利。 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/