【问题标题】:XML string resources vs Java Constant Strings?XML 字符串资源与 Java 常量字符串?
【发布时间】:2014-02-14 00:39:45
【问题描述】:

我有一个字符串就像String data="apps";

我知道在 Android 中加载字符串有两种方式..

第一个是

所以它是一个常数,我将它定义为

public static final String data="apps";

另一种类型是在res/vslues/strings.xml 文件中定义它,例如..

<string name="data">apps</string>
<string name="hello_world">Hello world!</string>

如果我想使用它..

第一种方式ClassName.data

第二种方式context.getResources().getString(resourceid)

问题:

所以现在我的问题是我想在不同的类中使用相同的String 30 次。而且我有更多数量的变量。所以在上述方法中加载速度更快,占用的内存更少..

【问题讨论】:

  • 更喜欢第二个。因为如果你在所有活动中都使用相同的内容并且你想再次更改它,你只需要在 strings.xml 中更改一次。我认为加载中不会有太大的差异
  • 取决于这些常量和资源的使用位置。我认为对于java代码,常量更好,因为你不需要像资源一样使用方法来读取字符串值。但是资源可以更好地处理语言环境..
  • strings.xml 比常量快
  • stackoverflow.com/questions/16433095/…。检查 Raghav Sood 的答案

标签: java android xml string


【解决方案1】:

但是,无论哪种情况,速度都不应该成为真正的问题。我会建议根据有意义的方式进行组织。

常量类

放置将在内部使用的字符串常量,例如数据库列名或其他键。

strings.xml

放置为用户显示的字符串。这样您就可以利用本地化等优势。

根据要求,您应该更喜欢第二种方法,即 XML 基于。

【讨论】:

  • 这听起来像是对我来说最合乎逻辑的答案。谢谢
【解决方案2】:

XML 字符串值是可根据区域设置覆盖的显示字符串。这样您就可以通过常量键引用可翻译的显示值。

【讨论】:

    【解决方案3】:

    您应该考虑使用 XML 字符串作为向用户显示某些内容并根据区域设置进行更改的一种方式。

    无论如何,应该使用public static final String data="apps"; 来隐藏一些非用户数据,例如数据库连接、日志消息等。

    【讨论】:

      【解决方案4】:

      我建议您利用 Android 资源系统。

      引用本书Android In Practice Resources in Android are efficient and fast. XML resources are compiled into a binary format. This makes them friendly at development time, without being slow at Runtime.

      【讨论】:

        【解决方案5】:

        我认为速度和内存使用量是一样的。类中的常量就像 string.xml 中的常量一样,它只存储一次,并在您需要时在其他地方引用。 但是,存储在 string.xml 中的优势在于可以避免额外的导入代码行。同时,您必须记住,对于 string.xml 存储,您只能在可访问活动上下文的情况下使用它。

        【讨论】:

          猜你喜欢
          • 2011-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-14
          • 2011-05-08
          相关资源
          最近更新 更多