1) Реализация контекста ContextImpl предоставляется Android системой и чтобы прозрачно установить её был придуман ContextWrapper:
class ContextWrapper : Context() {
private lateinit var base: Context
fun attachBase(ctx: Context) {
base = ctx
}
fun getAssets() = base.assets
}2) ContextWrapper имеет наследник ContextThemeWrapper, который нужен для хранения и установки темы в Activity, чтобы в дальнейшем иерархия View смогла получить цвета, шрифты и тд.
3) Кроме Application и Activity контекст наследуется таким компонентом как Service
