什么是android中的ContextWrapper

问题描述

我提到了这个 question 但没有答案。

文档也没有说清楚。

有人能提供清楚的解释吗?

解决方法

正如文档所说,它接受一个基本的 Context 实例并表现为一个 Context 本身,只是通过基本上下文委托所有调用。

当您从 ContextWrapper 继承并覆盖其某些功能时,就会出现差异,例如,您可以覆盖 Context.getTheme() 方法以为新上下文提供不同的主题。然后,ContextWrapper 的行为将与基本上下文相同,只是暴露了一个替代主题。

它通常在内部使用,而不是用于非系统应用,因此您可能永远不必处理它。


请注意,如果您查看 ContextThemeWrappersource code,可以更好地了解我给出的覆盖主题的示例,它充当提供替代主题的便利类。这很好地展示了它的用例。