【问题标题】:Accessing strings.xml from different contexts从不同的上下文访问 strings.xml
【发布时间】:2014-08-16 09:21:07
【问题描述】:

是否从不同的上下文访问 strings.xml 文件中的字符串是否重要?

我通过多种方式访问​​它,例如:getApplicationContext().getString(R.string.name)this.getString(R.string.name)MainActivity.this.getApplicationContext().getString(R.string.name),或者只是getString(R.string.name)

我知道应用程序上下文会持续整个应用程序生命周期,但老实说,我不知道什么时候应该使用它。另外,我不明白使用thisMainActivity.this 有什么区别。

请解释我应该如何访问 activitiesJava 类中的字符串。

【问题讨论】:

    标签: java android android-resources android-context applicationcontext


    【解决方案1】:

    使用 Application Context 或 Activity Context 的关键参数是对整个 App 或组件(在本例中为 Activity)的生命周期的依赖。如果您想访问 strings.xml,那么您使用哪一个并不重要。因为您只需使用 Context 获取对资源的引用,当 Activity 被销毁时,该引用就会消失。一个更重要的情况是,如果您将 Context 传递给另一个类 f.e.因为这样就存在对这个特定上下文的依赖,如果你不清理它可能会导致内存泄漏。在docs 中使用广播接收器对此有一个很好的解释。

    thisAnyClass.this 没有区别,因为它指向同一个类对象。但是如果你想在内部类中访问外部类,你必须使用AnyClass.this。或者,如果您有一个匿名类并且需要访问外部类的字段。你可以认为它更严格,因为你引用了一个特定的类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 2014-05-31
      • 2011-11-30
      相关资源
      最近更新 更多