6

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

4

2 回答 2

6

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

getApplicationContext

编辑

在找到您的答案时,它将帮助您根据所选上下文更改 Android Holo Light 样式

于 2013-04-22T07:26:49.380 回答
6

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

大多数时候最好使用活动上下文。

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

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

引用上述链接

以下是无论您走到哪里都不使用 getApplicationContext()的原因:

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

  2. 如果来自 getApplicationContext() 的 Context 保留了由您对其调用创建的、您未清理的内容,则它可能会造成内存泄漏。对于 Activity,如果它持有某些东西,一旦 Activity 被垃圾收集,其他所有东西也会被清除。Application 对象在您的进程的整个生命周期内保持不变。

于 2013-04-22T07:15:51.153 回答