【问题标题】:Difference between getApplicationContext and classname.thisgetApplicationContext 和 classname.this 之间的区别
【发布时间】:2026-01-15 14:25:02
【问题描述】:

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

【问题讨论】:

  • here
  • 可能是您对特定活动应用了不同的主题,然后是整个应用程序。这可能会根据使用的上下文导致样式不同。
  • 我实际上在所有活动中都使用 android:theme="@style/Theme.VPI"
  • 查看我编辑的答案...

标签: android android-context


【解决方案1】:

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

getApplicationContext

编辑

在找到你的答案时,它将帮助你Android Holo Light styling changes depending on chosen context

【讨论】:

  • 非常感谢,我在您的帖子中找到了答案
  • 欢迎 :) 亲爱的...很高兴我能帮助你
【解决方案2】:

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

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

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

When to call activity context OR application context?

引用以上链接

以下是为什么不使用 getApplicationContext() 的原因:

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

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

【讨论】:

  • 非常感谢,但我真的不明白为什么两个上下文中的文本颜色不同
  • 只需阅读答案中的第 1 点即可。也许是原因。给我们看一些代码。
  • 是的,你说得对,也许我应该仔细阅读上下文参考
  • @Shiv 检查了链接。它归结为上述答案中的第 1 点。可能是原因
最近更新 更多