У меня есть класс Application
, в котором я переопределяю getApplicationContext()
.
Я просмотрел исходный код Android и не могу найти, откуда он называется?
Иерархия наследования такова:
Application -> ContextWrapper -> Context
public abstract Context getApplicationContext();
getApplicationContext()
— это абстрактный метод класса Context
, который переопределяется в классе ContextWrapper
.
@Override
public Context getApplicationContext() {
return mBase.getApplicationContext();
}
mBase
является ссылкой на объект типа Context
, который инициализируется в конструкторе ContextWrapper, но в соответствии с кодом конструктор класса приложения передает 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
на выходе grepcode - person Blackbelt   schedule 22.07.2014