ContextWrapper(具有Context的代理)的目的是什么?

时间:2019-03-23 20:38:43

标签: android android-context proxy-pattern

根据Android文档,ContextWrapperContext的“近似实现”,它仅将其所有调用委托给另一个Context。可以通过子类修改行为而无需更改原始的Context。”

我对代理模式没有太多经验。在这里如何使用?用于什么目的?换句话说,为什么它的间接子类(例如ActivityService)不能直接子类化?

1 个答案:

答案 0 :(得分:1)

能够覆盖其某些行为。例如,您将为该应用程序提供一个基础Context,然后将其放在ContextWrapper中,并覆盖Resource对象以使其为主题(这是Android的实际功能)。

关于为什么要这样做而不是仅仅子类化,以便不必制作两个可能非常重的对象。您也可以在两者之间共享变量,但这增加了内存泄漏的可能性。创建对象的代价也很高,但如果已经完成,则可以通过代理来避免这种情况。