2013-04-23 61 views
11

以下是我在想的:android-strings.xml vs静态常量

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

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

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

getString(...) vs MyConstants.THIS_IS_A_CONSTANT 
+1

如果你不关心本地化或任何Android支持资源的其他[限定符](http://developer.android.com/guide/topics/resources/providing-resources.html),那么您也可以使用Java常量。我会将常量稍微加快一点,因为它们可以由编译器内联并且不需要被夸大。然而,它可能只是一个微型优化,所以我不会担心它太多,前提是你没有在UI线程中进行任何循环操作,并且在这个线程中不断膨胀字符串或字符串数​​组。 – 2013-04-23 03:03:21

+0

如果你想用差异语言发布你的应用程序,那么出现在用户界面上的所有字符串应该在strings.xml中。其余的你可以让它们静止,如果你想。 – 2013-04-23 03:09:40

+1

如果您真的是“最佳实践”,那么即使在一个小型的个人项目中,也不要硬编码UI字符串。最好避免不良习惯,这些习惯有一天会让您的程序员在他们不得不国际化您的代码时将盐倒入咖啡中。即使在代码中,一些字符串也应该是资源,例如处理可能因语言环境而异的用户输入时。 – MarsAtomic 2013-04-23 03:10:11

回答

33

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

在你的问题的意见,他们说这一切。我只想添加一些小点。

本地化:

对于本地化问题肯定字符串资源是最好的,你可以使用不同的语言文件differente语言环境。

内存:

作为字符串资源保存在XML文件中,以便有一些额外的开销(不虽然主要的一个)

性能:

读取内存始终是比从文件读取更快。虽然在这种情况下,性能差别并不显著

修的:

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

最后:

所以我的建议是

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

使用像 数据库名称,内部变量,意图过滤器名称等程序的内部puposes静态常量

+0

据我所知,XML文件也编译在apk中,所以我不认为有任何超载。 – 2016-08-17 09:51:15

+0

另一件事是,XML中的字符串可以直接用于XML布局,而常量则不是这种情况。 – 2017-03-30 13:04:42