我想知道是否可以这样做:每当我们传递一个Context
变量时,是否可以从Application类中获取单例引用呢?
例如,这是Application
类的子类,其中的单个静态变量指向其自己的实例
public class App extends Application {
public static mApp;
@Override
public void onCreate(){
mApp = this;
}
}
然后,当我们需要从某个地方将
Context
传递给方法时,我们可以做foo(App.mApp);
将
Context
当作应用程序变量可以吗? 最佳答案
好吧,这取决于您使用它的上下文。很多情况下,上下文是要保留所有内容,直到生命周期完成为止,然后允许垃圾回收取回其拥有的任何内容。
其他时候,上下文需要成为活动来处理生命周期回调,例如onNewIntent或onActivityResult。
在父级中保留静态实例只是避免将getApplication()强制转换为您的应用程序类型的捷径。我通常为MyApplication.getApplication()。doSomething创建一个方法,该方法将返回其自身的引用,而不是((MyApplication)getApplication())。doSomething
只是看起来更干净用于编码目的。但是我非常乐于在需要上下文的任何地方使用应用程序上下文,它最终会再次吸引您。
但是,是的,您当然可以将自己存储为要共享的静态变量,我在大多数应用程序中都这样做,但是通常是为了实现干净的可维护代码的特定快捷目的,而不是为了骗取从各种缝隙中获取上下文。
关于android - 在Application类中保存静态Context变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46557140/