Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android-strings.xml与静态常量_Android_String_Performance_Constants - Fatal编程技术网

android-strings.xml与静态常量

android-strings.xml与静态常量,android,string,performance,constants,Android,String,Performance,Constants,以下是我的想法: strings.xml上的字符串应该用于要使用的布局(xml)。和静态常量供代码(.java)使用 说到最佳实践,我想知道应该使用哪一种 如果你有很多字符串,它会有性能效果吗 getString(...) vs MyConstants.THIS_IS_A_CONSTANT 这两种情况都有一些优点和缺点(我应该说是优点和缺点) 正如在对你的问题的评论中,他们都说了。我只想补充几点 本地化: 对于本地化问题,字符串资源无疑是最好的,因为您可以为不同的语言环境使用不同的语言文件 内

以下是我的想法:

strings.xml上的字符串应该用于要使用的布局(xml)。和静态常量供代码(.java)使用

说到最佳实践,我想知道应该使用哪一种

如果你有很多字符串,它会有性能效果吗

getString(...) vs MyConstants.THIS_IS_A_CONSTANT

这两种情况都有一些优点和缺点(我应该说是优点和缺点)

正如在对你的问题的评论中,他们都说了。我只想补充几点

本地化:

对于本地化问题,字符串资源无疑是最好的,因为您可以为不同的语言环境使用不同的语言文件

内存:

由于字符串资源保存在xml文件中,因此会有一些额外的开销(虽然不是很大的开销)

性能:

从内存中读取总是比从文件中读取快。虽然在这种情况下,性能差异并不显著

维护:

这只是个人意见。对我来说,维护res文件比在类中维护字符串更容易。string.xml对我来说更可读

最后:

所以我的建议是

对将显示给用户的文本使用字符串资源

对程序的内部pupos使用静态常量,如 数据库名称、内部变量、意图过滤器名称等


如果您不关心本地化或Android支持的任何其他资源,那么您也可以使用Java常量。我希望常数稍微快一点,因为它们可以由编译器内联,不需要膨胀。不过,这可能只是一个微观优化,所以我不会太担心,只要你没有在不断膨胀字符串或字符串数组的UI线程上执行任何循环操作。如果你想用不同的语言发布你的应用程序,那么UI上出现的所有字符串都应该在strings.xml中。如果你真的追求“最佳实践”,就永远不要硬编码UI字符串,即使是在一个小型的个人项目中。最好避免有一天会让你的程序员同事在不得不国际化你的代码时向你的咖啡里加盐的坏习惯。即使在代码中,某些字符串也应该是资源,例如,在处理用户输入时,这些输入可能因语言环境而异。据我所知,xml文件也在apk中编译,因此我认为不会有任何过载。另一件事是,xml中的字符串可以直接用于xml布局,常量并非如此。String.xml被编译成java常量,因此没有文件读取的开销。@xml文件中的Talha字符串不会被编译成java常量。您可以通过使用
apktool
反编译apk文件来验证它,并检查XML文件是否仍然存在