在其onCreate中绑定Application上下文是否安全?

时间:2014-08-12 10:35:20

标签: android android-context

假设我们有自定义App extends Application

我理解应尽可能使用getApplicationContext()方法,但只有在提供此方法的范围内时才适用。有时你需要在它之外访问它,这就是我开始想知道的原因。

以下是示例代码

public class App extends Application
{
    private static App instance = null;

    public static App getInstance()
    {
        return instance;
    }

    public static Context getContext()
    {
        return instance;
    }

    @Override
    public void onCreate()
    {
        instance = this;
        super.onCreate();
    }
}

App.getContext()返回相同的上下文getApplicationContext()会在适当的范围内返回吗?像这样绑定App上下文是否安全?

1 个答案:

答案 0 :(得分:0)

static的生命周期几乎与您的Application相同。从某种意义上说它是安全的,它不会引起内存泄漏,它总是会引用正确的Application

getApplicationContext()会返回Application对象,该对象也是Context

但是,static这样的数据是您应该尽量避免的设计气味。它为您的代码添加了不必要的耦合,使组件更难以单独测试。相反,请考虑将Context作为参数传递给需要的参数。

有关Context这类Application特定内容的好文章,请阅读http://www.doubleencore.com/2013/06/context/