Во время разработки Android-приложений мне нравится смотреть на внутренние реализации SDK. Это огромный фреймворк, и иногда он очень помогает, если вы знаете, как реализованы внутренние методы.
Теперь последняя проверка источника, которую я сделал, действительно смущает меня. Я посмотрел на Context
класс, чтобы прочитать некоторые реализации. К сожалению, большинство из них абстрактные, поэтому Android изобретает ContextWrapper (простой шаблон адаптера).
Проблема в том, что я не смог найти некоторые методы, которые меня интересуют. Давайте возьмем getResources
в качестве примера. У меня есть ContextObject и вызываю getResources на нем. Этот контекст является экземпляром Activity
(который сам по себе не реализует getResources()
).
То же самое для ContextThemeWrapper, который является прямым родительским классом Activity. Затем ContextWrapper вызывает getResources()
на своем элементе Context
. Но кто тогда это реализует?
РЕДАКТИРОВАТЬ: добавлен фрагмент из ContextWrapper
public class ContextWrapper{
Context mContext
public ContextWrapper(Context ctx){
mContext = ctx
}
public Resourced getResources(){
return mContext.getResources()
}
//... all other Methods are implementing the same AdapterPattern
}
поэтому вопрос также может быть «какой контекст передается в ContextWrapper, который реализует требуемые методы»