getApplicationContext和classname.this之间的区别

Mis*_*ani 6 android android-context

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

Rag*_*dan 6

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

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

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

何时调用活动上下文或应用程序上下文?

引用形式上面的链接

以下是无论何时何地都不使用getApplicationContext()的原因:

  1. 它不是一个完整的Context,支持Activity所做的一切.您将尝试使用此Context进行的各种操作将失败,主要与GUI有关.

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


Shi*_*hiv 6

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

请参阅getApplicationContext

编辑

在找到答案时,它将帮助您根据所选环境更改Android Holo Light样式