在各种Android代码中,我已经看到:
public class MyActivity extends Activity {
public void method() {
mContext = this; // since Activity extends Context
mContext = getApplicationContext();
mContext = getBaseContext();
}
}
但是,我找不到哪种比较合适的解释,以及在什么情况下应该使用哪种解释。
我们将不胜感激有关此文档的指针以及有关如果选择了错误的文档可能会破坏的指南。
最佳答案
我同意,关于Android上下文的文档很少,但是您可以汇总来自各种来源的一些事实。
Google Android开发人员官方博客上的This blog post主要用于帮助解决内存泄漏,但同时也提供了一些有关上下文的良好信息:
稍微阅读一下文章,可以进一步了解两者之间的区别,以及何时需要考虑使用应用程序上下文(Activity.getApplicationContext()
)而不是使用 Activity 上下文this
。基本上,应用程序上下文与应用程序相关联,并且在您的应用程序的整个生命周期中始终是相同的,其中, Activity 上下文与 Activity 相关联,并且由于在屏幕方向变化期间 Activity 被破坏, Activity 上下文可能多次被破坏。这样。
除了Dianne Hackborn的帖子外,我什么都找不到关于何时使用getBaseContext()的任何信息,Dianne Hackborn是从事Android SDK的一位Google工程师:
那是来自android-developers newsgroup上的帖子,您可能也要考虑在那里询问您的问题,因为使用Android的少数人实际监视新闻组并回答问题。
因此,总的来说,似乎尽可能使用全局应用程序上下文。