【问题标题】:Using same Context Everywhere?到处使用相同的上下文?
【发布时间】:2016-06-26 12:44:30
【问题描述】:

我在我的应用程序中动态创建了很多视图。每个都需要上下文。

我应该只使用上下文的一个实例,然后将它们传递给每个人,还是应该使用不同的实例。

换句话说,哪个更好,这个-

Context context = this;

for (int i = 0; i < 10; i++) {
    SomeView view = new SomeView(context);
}

或者这个 -

for (int i = 0; i < 80; i++) {
    SomeView view = new SomeView(this);
}

注意:视图会在屏幕上停留很长时间。

【问题讨论】:

  • 亲爱的观众,如果我发布了一个愚蠢的问题,我很抱歉。请解释投反对票的原因。

标签: java android android-context


【解决方案1】:

如果是同班同学,可以直接使用“this”,
如果您需要当前类中其他类的上下文,请使用Context c = X.class;
希望对您有所帮助。

【讨论】:

    【解决方案2】:

    请注意,您的两个变体之间没有真正的区别。

    在第二个示例中,您没有创建this 的另一个实例! Java 在后台所做的只是将指针作为对 this 的引用传递给您的构造函数。而在第一个示例中,您将对 this 的引用传递给 context,并将相同的引用传递给您的构造函数。

    这意味着,如果您在视图内的上下文中更改某些内容,则上下文也会在其他所有视图中更改。请记住,线程安全不是开箱即用的,请小心。

    您可以阅读 Java 的内部工作原理:wikipedia 是一个很好的开始。

    【讨论】:

      猜你喜欢
      • 2012-03-04
      • 1970-01-01
      • 2021-12-02
      • 2010-11-02
      • 2010-12-14
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多