我有一个Application
类,在其中覆盖了getApplicationContext()
方法。
我查看了Android源代码,但无法找到调用它的位置?
继承层次结构是:
Application -> ContextWrapper -> Context
public abstract Context getApplicationContext();
getApplicationContext()
是 Context
类中的一个抽象方法,在 ContextWrapper
类中被覆盖重写。
@Override
public Context getApplicationContext() {
return mBase.getApplicationContext();
}
mBase
是指向类型为 Context
的对象的引用,该对象在 ContextWrapper 构造函数中进行初始化,但根据代码 Application 类构造函数将 null 传递给 super()
即 ContextWrapper
的构造函数。
public Application() {
super(null);
}
现在传递上下文的唯一可能方式是通过:
protected void attachBaseContext(Context base) {
if (mBase != null) {
throw new IllegalStateException("Base context already set");
}
mBase = base;
}
但是也没有调用这个方法。请帮我找到 getApplicationContext()
方法被调用的位置。
注意:请不要在回答中提供任何指向这类问题的链接,因为我已经看过了每一个链接,但还是没有得到明确的答案。
ContextImpl
。 - Blackbelt