每当我创建任何应用程序时,我总是对字符串进行硬编码,而不是从XML中的字符串资源引用它。应用程序工作正常,但我警告使用@string
资源
示例按钮:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="click here" />
我的问题是,如果我这样做,它是否会影响我的应用程序性能,或者它(@string
资源)仅用于国际化。
答案 0 :(得分:41)
这是一个Android lint警告,可以帮助您进行本地化。
从技术上讲,硬编码字符串会让你的应用程序运行得更好一些,因为它不必每次都从相应的R
int中查找字符串。但是,这种性能差异可以忽略不计,没有人会注意到它。
但是,您应该始终将您的String资源保留在values文件夹中,因为它使本地化变得非常容易。
答案 1 :(得分:4)
我认为没有理由通过使用硬编码字符串来获得更差的性能。硬编码字符串涉及的步骤较少。但是,最好将资源字符串与应用程序和UI代码分开。
答案 2 :(得分:4)
它不会产生任何性能问题。但是,为了便于维护和升级,鼓励在strings.xml中定义字符串。例如,考虑以下两种情况。
情景1
当您需要更改许多地方使用的字符串时。在您的情况下,您将必须更改所有布局中的所有"click here"
。但是如果你在strings.xml中声明,那么只有在xml中进行的更改才会改变它们。
场景2
另一个例子,如果你想为不同的语言环境显示不同的语言,那么你需要使用string.xml。
答案 3 :(得分:4)
正如其他人所说,这是本地化, 但是对于性能,它取决于每秒查看这些字符串的次数。 我已经看到一个应用程序启动缓慢的情况,并且堆栈采样显示50%的时间用于字符串的资源查找,并且查找字符串的原因是在启动屏幕上显示它们在应用程序启动时为用户提供一些可供查看的内容!
答案 4 :(得分:1)
我不认为对字符串进行硬编码会使程序运行得更慢..事实上它会提高性能,因为不需要在R.java类中查找字符串。
引用strings.xml
中的字符串是最佳做法,原因有两个: -
1-本地化 2-如果你在多个地方使用相同的字符串并且希望在所有地方编辑相同的字符串,则可以节省编辑所有硬编码字符串的开销。
答案 5 :(得分:1)
硬编码字符串不会直接影响性能。它会影响可维护性。
如果您对字符串进行硬编码,并且在以后的阶段中如果要将字符串“Click me”更改为“add”或其他内容,那么您需要搜索整个项目以更改字符串where and all it用过的。所以最好始终遵循strings.xml。 :)
答案 6 :(得分:0)
您的应用不支持Localization,如果这不是您应用的要求,那么使用硬编码字符串就没有问题。