2013-05-08 134 views
17

每当我做任何应用程序,我总是硬编码的字符串,而不是从XML的字符串资源引用它。应用程序工作正常,但给我的警告使用@string资源字符串的硬编码是否会影响性能?

实例按钮:

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

我的问题是,如果我这样做是否会影响我的应用程序的性能,从而也(@string资源)仅仅是用于国际化。

+22

如果您对它们进行硬编码,则开发人员的表现会变差。 ;) – AlbeyAmakiir 2013-05-08 06:46:37

回答

40

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

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

但是,您应该总是将字符串资源保留在值文件夹中,因为它使本地化非常简单。

+1

那么说。 +1 - – 2013-05-08 05:13:46

+0

+1的差异可能以毫秒为单位? – Raghunandan 2013-05-08 05:46:58

+1

@Raghunandan是的。可能在10-100毫秒的范围内。 – 2013-05-08 05:48:54

4

我看不出有什么理由,你会得到性能通过使用硬编码的字符串。硬编码字符串涉及的步骤较少。但是,从应用程序和UI代码中分离资源字符串当然是最佳做法。

4

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

方案1

当你需要改变在很多地方使用的字符串。在你的情况下,你将不得不在所有布局中更改所有"click here"。但是如果你在strings.xml中声明了,那么只有在xml中做出的改变才会改变它们。

方案2

另一个例子,如果你想显示不同的区域设置不同的语言,那么你需要使用string.xml。

0

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

1

我不认为一个硬编码字符串,就会使你的程序运行速度较慢任何..逸岸,因为没有需要任何查找在R.java类的弦,它就会增强性能。 引用从strings.xml字符串是最好的做法是由于两个原因: -

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

1

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

在情况下,如果你想改变字符串你硬编码字符串,并在以后的阶段“点击我”到“添加”或别的东西,那么你需要搜索你完整的项目要改变字符串地方和所有它用来。所以最好总是遵循strings.xml。 :)

4

正如其他人所说,它是为本地化, 但性能,它取决于每秒多少次这些字符串正在查找。 我已经看到一个应用程序启动速度慢的情况,堆栈抽样显示有50%的时间花在资源查找字符串上,并且查找字符串的原因是在启动画面上显示它们当应用程序启动时,用户可以看到一些东西!

相关问题