在应用程序类中保存静态上下文变量



我想知道是否可以这样做:每当我们通过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()的方法。

对于编码目的而言,似乎更干净。但是,我将在需要上下文的任何地方使用应用程序上下文,我将最终回来咬您。

但是,是的,您当然可以将自己存储为要共享的静态变量,我在大多数应用程序中都这样做,但通常是出于清洁可维护代码的特定快捷方式,而不是为了从各种缝隙中获取上下文而作弊。

最新更新