当我使用列表视图并且我有一个自定义Base Adapter类时,当getApplicationContext
和classname.this
实例化基本适配器时,我在列表视图中获得不同的文本颜色。
到getApplicationContext
我得到白色文字颜色,但classname.this
是黑色。有谁可以帮我解释一下?
答案 0 :(得分:6)
ActivityName.this是指活动上下文。 getApplicationContext()引用应用程序上下文。
大多数情况下,最好使用活动上下文。
检查commonsware提供的答案。有关于该主题的详细说明。
When to call activity context OR application context?
引用上面的链接
以下是为什么不在任何地方使用getApplicationContext()的原因:
这不是一个完整的上下文,支持Activity所做的一切。您将尝试使用此上下文执行的各种操作将失败,主要与GUI 相关。
如果来自getApplicationContext()的Context保留在您不能清理的调用所创建的内容上,则可能会造成内存泄漏。使用Activity,如果它保留了某些东西,一旦Activity被垃圾收集,其他一切都会被淘汰。 Application对象在您的进程的生命周期内保留。
答案 1 :(得分:6)
基本上它们都是Context的实例,但区别在于应用程序实例与应用程序的生命周期相关联,而Activity实例与Activity的生命周期相关联。因此,他们可以访问有关应用程序环境的不同信息......
修改强>
在找到答案时,它会对您有所帮助Android Holo Light styling changes depending on chosen context