什么';android xml文件中的硬编码字符串有什么问题?

什么';android xml文件中的硬编码字符串有什么问题?,android,xml,string,warnings,android-xml,Android,Xml,String,Warnings,Android Xml,我喜欢直接将简单文本放在xml文件上,而不首先声明字符串。它更容易,更简单,也不那么凌乱。然而,每当我这样做时,它总是有一个警告标志 如果我的xml文件中有几十个硬编码字符串而不考虑警告,该怎么办?我会遇到麻烦吗 提前感谢。不,您不会遇到麻烦,但是在xml中使用@string/yourString将是一个很好的实践,它将使多语言支持更容易。这不会有任何问题。但是使用string.xml将文本放入应用程序被认为是一种良好的编程实践。因为假设您希望在应用程序中的多个位置上显示相同的文本。每次硬编码时

我喜欢直接将简单文本放在xml文件上,而不首先声明字符串。它更容易,更简单,也不那么凌乱。然而,每当我这样做时,它总是有一个警告标志

如果我的xml文件中有几十个硬编码字符串而不考虑警告,该怎么办?我会遇到麻烦吗


提前感谢。

不,您不会遇到麻烦,但是在xml中使用
@string/yourString
将是一个很好的实践,它将使多语言支持更容易。这不会有任何问题。但是使用
string.xml
将文本放入应用程序被认为是一种良好的编程实践。因为假设您希望在应用程序中的多个位置上显示相同的文本。每次硬编码时都很难放入文本,尤其是文本有点大的时候。将文本放入单个文件意味着您可以从应用程序中的任何位置访问相同的文本。

无需担心这些警告。也许android开发者认为这不是一个好的做法。

但是,如果您的应用程序有一天可能支持多语言,那么使用@string/mystring是最佳实践。

这是关于性能的一些评论(@PankajKumar,@TechEnd,@Ken Y-N):

根据Google文档,“字符串是编译的资源数据类型:指向字符串的资源指针。” (链接:)

因此,我认为这将通过减少内存占用来提高性能,尽管差异可能不明显

这是因为,当我们在XML文件中声明字符串时,会维护指向该资源的指针。每当我们需要在其他地方再次重用该资源时,我们只会得到一个指向现有字符串的指针,从而在为同一字符串分配新内存时节省内存。 这与使用硬编码字符串不同,硬编码字符串每次都会为相同的字符串资源分配内存

希望这有帮助。欢迎评论

问候,,
嗯。

您的公司刚刚被收购,现在您可以阅读数千行代码,并将旧名称换成新名称,因为有人硬编码字符串。你想国际化你的代码,让它说西班牙语很容易。只需制作一个新的strings.xml,只命名为strings_es.xml手机本身设置为西班牙语当然你会翻译,但你已经完成了。我看不懂字符串,因为这部手机太小了,也许你可以对小型手机进行简短的描述。当您在java代码和xml文件中使用硬编码字符串时,您的应用程序会直接将这些字符串写入RAM。但当您将它们声明为字符串资源时,当应用程序启动时,它们不会写入RAM,而是在应用程序需要使用它们时写入RAM。你可以在资源中声明10亿个字符串,你仍然可以拥有一个轻量级的RAM友好的Android应用程序。

我真的很好奇-使用
@string
有什么性能优势?(不包括使多语言支持更容易的明显内容)我本以为额外的间接层次会是一个负面因素。你上面的评论很有道理,毕竟这样做是好的。谢谢我想问的是,当我在string.xml中添加字符串时,如何确保它能提高我的应用程序性能?令人惊讶的是,这是一个被选中的答案……@PankajKumar——如果你收到警告,它不会对应用程序性能产生太大影响。但是,当与泛型出现之前编写的遗留代码交互时,可能会出现警告。这并不意味着警告=消耗内存..这取决于你,但如果你遵循编码标准,那么如果需要的话,很容易更改。相关:我不确定Davlik,但在大多数JVM中,字符串池意味着您实际上重用了相同的字符串,因此您所说的在Java中通常是不正确的。