大括号中的上下文

时间:2019-07-15 15:19:33

标签: java android

活动是扩展上下文,然后为什么我们将上下文作为参数传递...

LinearLayout layout = new LinearLayout(context);

2 个答案:

答案 0 :(得分:2)

通常,您在Android中Context交出任何View几乎总是一项活动。大概有99.9%的时间。但是,在某些情况下,这不是您想要通过的。在这种情况下,也许您正在从活动中构建UI的一部分,以便稍后放置。您可能不知道它将附加到什么活动。

有充分的理由要确保它始终是活动,如in this article所述。例如,利用“活动”可确保主题保持一致。

由于View不需要 可以创建的活动,因此我们不需要处理该活动。因此,构造函数仅采用Context。这是ISP(接口隔离原理)的一个很好的例子,因为我们限制了View可以安全访问的范围(它可以在Context上调用的方法)。我们还增加了View API的灵活性,因为我们不需要Activity来实例化视图。

答案 1 :(得分:1)

如您在this中所见,

Identity isa Activity

Context会在您的应用运行的整个过程中持续,而Context会在Activity结束后停止。如果Activity在代码中的Activity对象之前结束,则会发生内存泄漏,因为仍然有对该LinearLayout的引用。