获取上下文的更好方法是什么?

问题描述:

根据this answer或android的文档,有几种方法可以在应用程序中获取上下文,并将其传递给其他类/方法/任何。获取上下文的更好方法是什么?

比方说,我在Foo活动中,并需要将上下文传递给Bar的构造函数。

Bar bar = new Bar(Foo.this); 
Bar bar2 = new Bar(this); //same as first i guess 
Bar bar3 = new Bar(getApplicationContext()); 
Bar bar4 = new Bar(getBaseContext()); 
Bar bar5 = new Bar(MyApp.getContext); // get context statically 

考虑到内存泄漏,速度快,性能一般,这将是所有这些可能性之间的更好的办法?

你应该看看this question - 这basicly覆盖你的一样。

此外,Avoiding memory leaks上的开发人员文档给出了一些适合各种方法合理使用的情景的正确解释。

我认为这篇文章会为您提供足够的信息。看看第一个回应。

Difference between Activity Context and Application Context

Android memory management。它涵盖了Android内存管理的所有方面。

对于上下文的解释this是一个很好的答案。

另外good explanations of context

你可能会想要使用这个。这是您当前Activity(其中上下文)的上下文,并且具有最短的生命周期。但请注意可能发生的内存泄漏。 http://developer.android.com/resources/articles/avoiding-memory-leaks.html

我对你的问题没有任何直接的答案,但是如果你比较Foo.this和这个,那么最好使用第一个有时(在嵌套类情况下)第二个将显示错误。

更多讨论,它经过该链接

Using Application context everywhere?

希望它能帮到你