18

每当我制作任何应用程序时,我总是对字符串进行硬编码,而不是从 XML 的字符串资源中引用它。应用程序运行良好,但警告我使用@string资源

示例按钮:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="click here" />

我的问题是这样做是否会影响我的应用程序性能,或者它(@string资源)仅用于国际化。

4

7 回答 7

43

这是一个 Android lint 警告,可帮助您进行本地化。

从技术上讲,硬编码字符串会使您的应用程序性能更好一些,因为它不必R每次都从相应的 int 中查找字符串。但是,这种性能差异可以忽略不计,没有人能够注意到它。

但是,您应该始终将 String 资源保存在 values 文件夹中,因为它使本地化变得非常容易。

于 2013-05-08T05:11:39.963 回答
4

正如其他人所说,这是为了本地化,但为了性能,这取决于每秒查找这些字符串的次数。我见过一个应用程序启动速度很慢的情况,堆栈采样显示 50% 的时间都花在了字符串的资源查找上,而查找字符串的原因是在启动画面上显示它们在应用程序启动时为用户提供一些可以查看的内容!

于 2013-05-08T10:37:08.780 回答
4

我认为没有理由通过使用硬编码字符串来获得更差的性能。硬编码字符串涉及的步骤更少。但是,将资源字符串与应用程序和 UI 代码分开无疑是最佳实践。

于 2013-05-08T05:11:24.973 回答
4

它不会产生任何性能问题。但是为了便于维护和本地化,鼓励在 strings.xml 中定义字符串。例如考虑以下两种情况。

方案 1

当您需要更改在许多地方使用的字符串时。在您的情况下,您将不得不更改"click here"所有布局。但是,如果您在 strings.xml 中声明,那么只有在 xml 中所做的更改才会全部更改。

方案 2

再举一个例子,如果你想为不同的语言环境显示不同的语言,那么你需要使用 string.xml。

于 2013-05-08T05:12:43.167 回答
1

我不认为硬编码字符串会使你的程序运行得更慢。事实上它会提高性能,因为不需要在 R.java 类中查找字符串。引用字符串 fromstrings.xml是最佳实践,原因有两个:-

1- 本地化 2- 如果您在多个地方使用相同的字符串并且想在所有地方编辑相同的字符串,则可以节省单独编辑所有硬编码字符串的开销。

于 2013-05-08T05:18:27.100 回答
1

硬编码字符串不会直接影响性能。它影响可维护性。

如果您对字符串进行硬编码,并且在稍后阶段,如果您想将字符串“Click me”更改为“add”或其他内容,那么您需要搜索您的完整项目以更改字符串的使用位置和全部。所以最好始终遵循strings.xml。:)

于 2013-05-08T10:23:27.053 回答
0

那么您的应用程序将不支持本地化,如果这不是您的应用程序的要求,那么使用硬编码字符串将没有问题。

于 2013-05-08T05:18:18.223 回答