最近在Context的两个子类的Context中不是很了解,为什么要使用ContextImpl类来实现Context,而不是直接使用ContextWrapper?
答案 0 :(得分:3)
上下文是抽象类,它充当有关应用程序环境的全局信息的接口。这是一个抽象类,其实现由Android系统提供。它允许访问特定于应用程序的资源和类,以及应用程序级操作的上调,例如启动活动,广播和接收意图等。
请参阅上下文类代码here
ContextWrapper 是Context的适配器或代理实现,它只是将其所有调用委托给另一个Context。可以子类化以修改行为而无需更改原始上下文。 [它使用adapter pattern]
请参阅ContextWrapper类代码here
ContextImpl 是Context API的常见实现,它为Activity和其他应用程序组件提供基本上下文对象。
请参阅ContextImpl类代码here
因此,如果您浏览上述三个类的代码,则可以 容易理解抽象类Context类声明了API 方法,ContextImpl实现那些API方法,而 ContextWrapper类只是任何Context类型的适配器,因此它可以 用于需要适配器模式的各个地方 而不是使用Context子类。
希望它减少混乱!!