假设我们有自定义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上下文是否安全?
答案 0 :(得分:0)
static
的生命周期几乎与您的Application
相同。从某种意义上说它是安全的,它不会引起内存泄漏,它总是会引用正确的Application
。
getApplicationContext()
会返回Application
对象,该对象也是Context
。
但是,static
这样的数据是您应该尽量避免的设计气味。它为您的代码添加了不必要的耦合,使组件更难以单独测试。相反,请考虑将Context
作为参数传递给需要的参数。
有关Context
这类Application
特定内容的好文章,请阅读http://www.doubleencore.com/2013/06/context/