从不同的上下文访问strings.xml

时间:2014-08-16 09:21:07

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

我是否从不同的上下文中访问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之间的区别。

请解释我应如何访问活动 Java类中的字符串。

1 个答案:

答案 0 :(得分:0)

使用应用程序上下文或活动上下文的关键参数是对整个App或组件(本例中为Activity)的生命周期的依赖性。如果你想访问strings.xml,那么你使用哪一个并不重要。因为你只是使用Context获得对ressource的引用,当Activity被销毁时它会消失。如果将Context传递给另一个类f.e,则更为重要的情况。因为这样一个依赖于这个特定的上下文,如果你不清理它可能会导致内存泄漏。通过在docs中使用BroadcastReceiver,可以很好地解释这一点。

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