我想知道是否可以这样做:每当我们通过Context
变量时,我们是否可以从应用程序类获得Singleton参考
例如,这里是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()的方法。
对于编码目的而言,似乎更干净。但是,我将在需要上下文的任何地方使用应用程序上下文,我将最终回来咬您。
但是,是的,您当然可以将自己存储为要共享的静态变量,我在大多数应用程序中都这样做,但通常是出于清洁可维护代码的特定快捷方式,而不是为了从各种缝隙中获取上下文而作弊。