为什么在Android中使用ContextImpl实现Context而不是ContextWrapper?

时间:2016-08-24 12:05:15

标签: android

最近在Context的两个子类的Context中不是很了解,为什么要使用ContextImpl类来实现Context,而不是直接使用ContextWrapper?

1 个答案:

答案 0 :(得分:3)

上下文是抽象类,它充当有关应用程序环境的全局信息的接口。这是一个抽象类,其实现由Android系统提供。它允许访问特定于应用程序的资源和类,以及应用程序级操作的上调,例如启动活动,广播和接收意图等。
请参阅上下文类代码here

ContextWrapper 是Context的适配器或代理实现,它只是将其所有调用委托给另一个Context。可以子类化以修改行为而无需更改原始上下文。 [它使用adapter pattern]
请参阅ContextWrapper类代码here

ContextImpl 是Context API的常见实现,它为Activity和其他应用程序组件提供基本上下文对象。
请参阅ContextImpl类代码here

  

因此,如果您浏览上述三个类的代码,则可以   容易理解抽象类Context类声明了API   方法,ContextImpl实现那些API方法,而   ContextWrapper类只是任何Context类型的适配器,因此它可以   用于需要适配器模式的各个地方   而不是使用Context子类。

希望它减少混乱!!