【问题标题】:Defining Strings in res/values/string.xml?在 res/values/string.xml 中定义字符串?
【发布时间】:2010-12-17 23:16:23
【问题描述】:

res/values/string.xml 目录的xml 中定义字符串有什么意义?它是否比仅将字符串定义为类中的常量更有效? (例如数据库表创建脚本等)

这是组织问题还是 Android 如何处理内存中的这些对象有什么好处?

【问题讨论】:

    标签: android


    【解决方案1】:
    • 因此您可以轻松地将它们翻译成不同的语言。
    • 因此它们井井有条,您可以将它们全部集中在一个地方。

    【讨论】:

    • 它非常好,因为它是完全自动的。您提供不同语言的字符串,Context.getString() 将返回最适合的语言。您仍然可以使用参数(%1$s、%2$d)对其进行格式化,甚至可以更改不同语言的顺序。
    【解决方案2】:

    如果您使用 strings.xml,您可以轻松翻译您的应用程序。只需创建一个后缀为 values-cs 的新文件夹,然后将带有捷克语字符串的 xml 放入其中,如果您在手机中设置了捷克语本地化,则整个应用程序将被翻译为捷克语。

    【讨论】:

      【解决方案3】:
      • 应用程序比普通字符串更快地访问/计算它们
      • 本地化

      The hello string is defined in the res/values/strings.xml file. This is the recommended practice for inserting strings to your application, because it makes the localization of your application to other languages graceful, without need to hard-code changes to the layout file.

      • 语言(计算机)翻译

      对我来说,第一点是破坏交易,任何让您的应用程序更快的事情。 (这是从创建我自己的应用程序的无数小时中假设的,并且从优化的角度来看,使用 string.xml 是最好的,另外,特别是在长列表视图中,它似乎对我来说加载得更快(droid A855))

      【讨论】:

      • 如果是真的,当然。但是字符串文字基本上只是加载一个固定地址。调用Context.getString() 将调用一个本机函数,该函数需要使用哈希查找来查找实际的 String 对象,更不用说它必须确定从中检索它的正确语言。
      • 也就是说,检索字符串并不是让您的应用程序更快或更慢的原因,除非您有一个循环,您出于某种原因加载了 1000000 个字符串。不要在错误的地方优化。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      相关资源
      最近更新 更多