我是否从不同的上下文中访问strings.xml文件中的字符串是否重要?
我通过多种方式访问它,例如:getApplicationContext().getString(R.string.name)
,this.getString(R.string.name)
,MainActivity.this.getApplicationContext().getString(R.string.name)
或简称getString(R.string.name)
。
我知道应用程序上下文会持续整个应用程序的生命周期,但老实说我不知道何时应该使用它。另外,我无法理解使用this
和MainActivity.this
之间的区别。
请解释我应如何访问活动和 Java类中的字符串。
答案 0 :(得分:0)
使用应用程序上下文或活动上下文的关键参数是对整个App或组件(本例中为Activity)的生命周期的依赖性。如果你想访问strings.xml,那么你使用哪一个并不重要。因为你只是使用Context获得对ressource的引用,当Activity被销毁时它会消失。如果将Context传递给另一个类f.e,则更为重要的情况。因为这样一个依赖于这个特定的上下文,如果你不清理它可能会导致内存泄漏。通过在docs中使用BroadcastReceiver,可以很好地解释这一点。
this
和AnyClass.this
之间没有区别,因为它指向同一个类对象。但是如果你想访问内部类中的外部类,则必须使用AnyClass.this
。或者,如果您有一个匿名类,并且需要访问外部类的字段。你可以看到它更严格,因为你引用了一个特定的类。