根据Android文档,ContextWrapper是Context
的“近似实现”,它仅将其所有调用委托给另一个Context
。可以通过子类修改行为而无需更改原始的Context
。”
我对代理模式没有太多经验。在这里如何使用?用于什么目的?换句话说,为什么它的间接子类(例如Activity和Service)不能直接子类化?
答案 0 :(得分:1)
能够覆盖其某些行为。例如,您将为该应用程序提供一个基础Context,然后将其放在ContextWrapper中,并覆盖Resource对象以使其为主题(这是Android的实际功能)。
关于为什么要这样做而不是仅仅子类化,以便不必制作两个可能非常重的对象。您也可以在两者之间共享变量,但这增加了内存泄漏的可能性。创建对象的代价也很高,但如果已经完成,则可以通过代理来避免这种情况。