【问题标题】:android - strings.xml vs static constantsandroid - strings.xml 与静态常量
【发布时间】:2013-04-16 02:50:48
【问题描述】:

这就是我的想法:

strings.xml 上的字符串应该用于要使用的布局 (xml)。静态常量供代码(.java)使用。

说到最佳实践,我想知道应该使用哪个。

如果你有很多字符串,它会有性能影响吗?

getString(...) vs MyConstants.THIS_IS_A_CONSTANT

【问题讨论】:

  • 如果您不关心本地化或 Android 支持的任何其他 qualifiers 资源,那么您不妨使用 Java 常量。我希望常量稍微快一些,因为它们可以被编译器内联并且不需要被夸大。但是,它可能只是一个微优化,所以我不会太担心它,前提是你没有在 UI 线程上执行任何循环操作,在其中你不断地膨胀字符串或字符串数​​组。
  • 如果你想以不同的语言发布你的应用程序,那么所有出现在 UI 上的字符串都应该在 strings.xml 中。其余的你可以根据需要将它们设为静态。
  • 如果您真正追求的是“最佳实践”,切勿对 UI 字符串进行硬编码,即使是在小型个人项目中也是如此。最好避免有朝​​一日会导致您的程序员同事在必须将您的代码国际化时向您的咖啡中泼盐的坏习惯。即使在代码中,一些字符串也应该是资源,例如处理可能因地区而异的用户输入时。

标签: android string performance constants


【解决方案1】:

这两种情况都有一些优点和缺点(我应该说优点和较少的优点)。

正如在您的问题中他们所说的那样。我只是想补充一些小点。

本地化:

对于本地化问题,字符串资源绝对是最好的,因为您可以为不同的语言环境使用不同的语言文件。

内存:

由于字符串资源保存在 xml 文件中,所以会有一些额外的开销(虽然不是主要开销)

性能:

从内存读取总是比从文件读取快。虽然在这种情况下性能差异并不显着

维护:

这只是个人意见。对我来说,维护 res 文件比在课堂上维护字符串更容易。 string.xml 对我来说更具可读性。

最后:

所以我的建议是

为将要显示给用户的文本使用字符串资源。

为程序的内部目的使用静态常量,例如 数据库名称、内部变量、意图过滤器名称等。

【讨论】:

  • 据我所知,xml文件也是在apk中编译的,所以我认为没有任何过载。
  • 另一件事是,来自 XML 的字符串可以直接在 XML 布局中使用,而常量则不是这样。
  • String.xml 被编译成 java 常量,因此没有文件读取的开销。
  • @Talha XML 文件中的字符串不会编译成 java 常量。您可以通过使用 apktool 反编译 apk 文件来验证它并检查 XML 文件是否仍然存在
猜你喜欢
  • 1970-01-01
  • 2014-07-02
  • 2010-12-13
  • 2010-10-19
  • 1970-01-01
  • 2011-05-09
  • 2011-01-14
相关资源
最近更新 更多