Я помогаю собрать эту страницу: что такое контекст?
Чтобы проиллюстрировать, как компоненты связаны с Context
, я создал эту диаграмму, просматривая исходный код рамки:
После того, как я раскололся, у меня возникли следующие вопросы:
- Что создает
Context
и какие конкретные классы используются? Базовый классContext
сам по себе является абстрактным классом, который требует почти всех его методов для реализации. ИContextWrapper
, приContextWrapper
экземпляра, требует, чтобы экземплярContext
был передан в качестве базового контекста, поэтому должен быть хотя бы один конкретный классContext
. - Я понимаю, что
ContextWrapper
и его подклассы используют шаблон оболочки/декоратора, чтобы добавить функциональность к базовому классуContext
мере необходимости. Какова цельContextThemeWrapper
? Он переопределяет несколько методов, но если он обертывает базовыйContext
, почему бы просто не делегировать вызовы базовомуContext
? Например, классActivity
расширяетContextThemeWrapper
, который обеспечивает конкретную реализацию дляgetTheme()
иsetTheme()
. Зачем?
Разработчики Java-разработчиков Android немного расплывчаты. Например, ContextWrapper