在任何地方使用相同的上下文?

时间:2016-06-26 12:44:31

标签: java android android-context

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

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

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

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);
}

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

2 个答案:

答案 0 :(得分:0)

如果您在同一个班级工作,可以直接使用&#34; this&#34;,
如果您需要当前班级中其他班级的上下文,请使用Context c = X.class;
希望它有所帮助。

答案 1 :(得分:0)

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

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

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

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