Android 在应用程序中硬编码阵列的最佳方法是什么?

Android 在应用程序中硬编码阵列的最佳方法是什么?,android,arrays,Android,Arrays,我的应用程序需要运行三个数组:一个字符串数组和两个整数数组。每个数组的长度为100。要将这些阵列添加到我的应用程序中,我想到了以下两种方法: 在Utils.java类中将它们硬编码为静态最终变量,并在需要时在活动中引用它们 将它们放在res文件夹中,并在需要时(使用)构建数组 现在,我想知道: 在内存和效率方面,最好的方法是什么 第一种方法会增加我的应用程序所需的内存吗?第二个问题会导致延迟和响应问题吗 有更好的方法吗? 将数据存储在文本文件或属性文件中。一旦有对这些细节的请求,在数组中读取

我的应用程序需要运行三个数组:一个字符串数组和两个整数数组。每个数组的长度为100。要将这些阵列添加到我的应用程序中,我想到了以下两种方法:

  • Utils.java
    类中将它们硬编码为静态最终变量,并在需要时在活动中引用它们
  • 将它们放在
    res
    文件夹中,并在需要时(使用)构建数组
现在,我想知道:

  • 在内存和效率方面,最好的方法是什么
  • 第一种方法会增加我的应用程序所需的内存吗?第二个问题会导致延迟和响应问题吗
  • 有更好的方法吗?
    将数据存储在文本文件或属性文件中。一旦有对这些细节的请求,在数组中读取它们


    然后,您可以根据需要将其保存在内存中。

    如果每种语言的数组都相同,等等。我会在您的Utils类中使用硬编码。这肯定是最快的方法,因为如果你将它们作为资源,你的应用程序必须在运行时读取文件,这比已经在代码中读取文件要慢得多。 应用程序的总体大小不会有太大变化,因为每种方法都会在应用程序包的某个地方提供数据。无论是代码还是参考资料中的文本文件。实际上,由于代码中的硬编码整数是以二进制形式存储的整数,它们需要的内存稍微少一些(java中的每个整数需要存储4个字节,而文本文件中类似100000000的整数需要10个字节)


    只有当这些数组因不同的语言而不同时,您才应该将解决方案与资源一起使用。

    这是通常的时间与空间权衡。我将结合您提到的两种方法。从资源文件加载数组,并通过一些预定义的getter方法访问它们。这允许您稍后更改方法,如果时间或空间成为一个问题,我猜它不会,如果不涉及使用数组的代码,我认为将它们外部保存在文件中是更好的做法,主要是因为您可以更轻松地更改它们,而无需推出新代码和兼容性原因。例如,您可以在启动时读取它们,或者在需要时只读取一次(动态)Utils类,以获得更高的效率

    如果您需要(或想要)应用程序的快速响应,毫无疑问,如果字符串相对较小,我会选择更高效的选项(硬代码/启动时加载一次)。200
    整数和100(小)
    字符串
    占用的空间非常小。a
    字符串[100]
    的平均值为100个字符将占用约24KB,而200
    int
    s将占用824字节的内存(包括数组对象开销)