12

我喜欢将简单的文本直接放在 xml 文件中,而无需先声明字符串。它更容易,更简单,更少混乱。但是,每当我这样做时,它总是有一个警告标志。

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

提前致谢。

4

6 回答 6

13

当您在 java 代码和 xml 文件中使用硬编码字符串时,您的应用程序直接将这些字符串写入 RAM。但是,当您将它们声明为字符串资源时,它不会在应用程序启动时写入 RAM,而是在应用程序需要使用它们时写入 RAM。你可以在资源中声明十亿个字符串,你仍然可以拥有一个轻量级的 RAM 友好的 Android 应用程序。

于 2015-02-18T10:41:09.283 回答
7

不会有任何麻烦。但是使用string.xml将文本放入您的应用程序被认为是一种良好的编程习惯。因为假设您想在应用程序中的多个位置使用相同的文本。每次硬编码时都很难放置文本,尤其是在文本有点大的情况下。将文本放入单个文件意味着您可以从应用程序中的任何位置访问相同的文本。

于 2012-09-28T05:50:15.433 回答
6

不,您不会遇到麻烦,但@string/yourString在您的 xml 中使用将是一个很好的做法,它会使多语言支持更容易。

于 2012-09-28T05:45:19.357 回答
6

您的公司刚刚被收购,现在您可以阅读数千行代码并将旧名称更改为新名称,因为有人对字符串进行了硬编码。你想国际化你的代码,这样它就可以说西班牙语了手机太小了,也许你可以给小手机做个简短的描述。阅读 mvc 祝你好运

于 2013-09-25T04:15:24.203 回答
4

无需担心这些警告。也许android开发人员认为这不是一个好习惯。
但是如果你的应用程序有一天可能支持多语言,那么使用@string/mystring 是最佳实践。

于 2012-09-28T05:55:04.927 回答
2

这是参考一些关于性能的评论(@PankajKumar、@TechEnd、@Ken YN):

根据 Google 文档,“字符串是已编译的资源数据类型:指向字符串的资源指针。” (链接:http: //developer.android.com/guide/topics/resources/string-resource.html#String

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

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

希望这可以帮助。欢迎评论。

问候,MM。

于 2013-05-06T08:01:58.773 回答