我想将应用程序上下文存储在一个静态成员中,就像这样,所以我可以在任何地方访问它、共享首选项、资源等。
我的问题是上下文是否可以在应用程序生命周期内自行更改,因此存储的上下文将无法以正确的方式工作,并且我无法访问共享首选项等。
或者上下文是不可变的,所以我可以毫无疑问地使用它?
谢谢你的回答!
应用程序上下文在应用程序生命周期内保持不变。
Context is immutable during all work of app. And you can use it in static way to get resources, shared preferences, etc.
当您查看此帖子的已接受答案时,您会发现这样做是可以的,但要小心处理...
这种方法有几个潜在的问题,尽管在很多情况下(比如你的例子)它会很好地工作。
特别是在处理需要上下文的 GUI 时,您应该小心。例如,如果您将应用程序上下文传递给 LayoutInflator,您将得到一个异常。一般来说,您的方法非常好:在该 Activity 中使用 Activity 的 Context 是一种很好的做法,并且在传递超出 Activity 范围的上下文时使用 Application Context 以避免内存泄漏。
是的,您可以将它与共享偏好一起使用并获取资源等。
getApplicationContext() 函数应该这样做。它是否可变无关紧要。