我注意到自己经常打字:
someVar = getResources().getString(R.string.someString);
我有几个XML文件,我正在解析和构建,为了确保文件保持一致,我已将标记名称放在res / values / strings.xml文件中。在几个活动中使用相同的句柄,其中一些活动扩展了ListActivity,而其他活动则没有这样创建一个容纳这些变量的简单超类(例如:
public class thisClass extends thatClass
{...}
public class thatClass
{
package String someTag = "this";
package String otherTag = "that";
}
我认为所有这些对getResources()的调用都会变得非常费力,并且想知道是否有利于创建一个R类型的文件,我可以静态地存储这些类型的常用变量:
public final class globalVars
{
public static final class XML_TAGS
{
static final String someTag = "this";
static final String otherTag = "that";
}
}
并引用这些变量:
serializer.startTag("", globalVars.XML_TAGS.someTag);
而不是
serializer.startTag("", getResources().getString(R.string.someTag));
感谢您的投入!
答案 0 :(得分:4)
好的,在查看了android.content.res.resources和其他一些类的源代码之后,很明显,与静态类相比,使用资源并通过getResources()
获取资源代价高昂 强>
实际上,返回的Resources
实例不是静态容器,而是通过执行一些语句(无论是字符串还是可绘制或任何其他形式)来获取资源的对象。
然而,使用getResources()有其优势:
static
容器可能提供比使用资源更便宜的替代方案,但请记住:任何后来的本地化尝试都会相对极其昂贵。