getApplicationContext和classname.this之间的区别

时间:2013-04-22 07:12:58

标签: android android-context

当我使用列表视图并且我有一个自定义Base Adapter类时,当getApplicationContextclassname.this实例化基本适配器时,我在列表视图中获得不同的文本颜色。 到getApplicationContext我得到白色文字颜色,但classname.this是黑色。有谁可以帮我解释一下?

2 个答案:

答案 0 :(得分:6)

ActivityName.this是指活动上下文。 getApplicationContext()引用应用程序上下文。

大多数情况下,最好使用活动上下文。

检查commonsware提供的答案。有关于该主题的详细说明。

When to call activity context OR application context?

引用上面的链接

以下是为什么不在任何地方使用getApplicationContext()的原因:

  1. 这不是一个完整的上下文,支持Activity所做的一切。您将尝试使用此上下文执行的各种操作将失败,主要与GUI 相关。

  2. 如果来自getApplicationContext()的Context保留在您不能清理的调用所创建的内容上,则可能会造成内存泄漏。使用Activity,如果它保留了某些东西,一旦Activity被垃圾收集,其他一切都会被淘汰。 Application对象在您的进程的生命周期内保留。

答案 1 :(得分:6)

基本上它们都是Context的实例,但区别在于应用程序实例与应用程序的生命周期相关联,而Activity实例与Activity的生命周期相关联。因此,他们可以访问有关应用程序环境的不同信息......

请参阅 getApplicationContext

修改

在找到答案时,它会对您有所帮助Android Holo Light styling changes depending on chosen context