当我使用列表视图并且我有一个自定义的基本适配器类时,当基本适配器由getApplicationContext
and实例化时,我在列表视图中得到不同的文本颜色classname.this
。通过getApplicationContext
我得到白色的文本颜色,但是classname.this
是黑色的。谁能为我解释一下?
问问题
3824 次
2 回答
6
基本上它们都是 Context 的实例,但区别在于应用程序实例与应用程序的生命周期相关联,而 Activity 实例与活动的生命周期相关联。因此,他们可以访问有关应用程序环境的不同信息......
编辑
在找到您的答案时,它将帮助您根据所选上下文更改 Android Holo Light 样式
于 2013-04-22T07:26:49.380 回答
6
ActivityName.this 指的是活动上下文。getApplicationContext() 指的是应用程序上下文。
大多数时候最好使用活动上下文。
检查commonsware提供的答案。有关于该主题的详细说明。
引用上述链接
以下是无论您走到哪里都不使用 getApplicationContext()的原因:
它不是一个完整的 Context,支持 Activity 所做的一切。您将尝试使用此 Context 执行的各种操作都会失败,主要与 GUI 相关。
如果来自 getApplicationContext() 的 Context 保留了由您对其调用创建的、您未清理的内容,则它可能会造成内存泄漏。对于 Activity,如果它持有某些东西,一旦 Activity 被垃圾收集,其他所有东西也会被清除。Application 对象在您的进程的整个生命周期内保持不变。
于 2013-04-22T07:15:51.153 回答