【问题标题】:What is the purpose of ContextWrapper (having a proxy for Context)?ContextWrapper 的目的是什么(拥有 Context 的代理)?
【发布时间】:2019-08-14 12:49:33
【问题描述】:

根据 Android 文档,ContextWrapperContext 的“[p]roxying 实现,它只是将其所有调用委托给另一个 Context。可以子类化以修改行为而不更改原始 Context 。”

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

【问题讨论】:

    标签: android android-context proxy-pattern


    【解决方案1】:

    能够覆盖它的一些行为。例如,您将拥有应用程序的基本 Context,然后将其放入 ContextWrapper 并覆盖 Resource 对象以对其进行主题化(这是 Android 实际所做的)。

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

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 2018-07-23
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      • 1970-01-01
      • 2021-02-03
      • 2017-09-14
      相关资源
      最近更新 更多