在您的应用中硬编码数组的最佳方法?

时间:2013-04-21 07:05:48

标签: android arrays

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

  • 将它们作为静态最终变量在Utils.java类中进行硬编码,并在我需要时在我的活动中引用它们。
  • 将它们放在res文件夹中,并在需要时构建数组(使用getStringArray())。

现在,我想知道:

  1. 在内存和效率方面最好的方法是什么?
  2. 第一种方法会增加我的应用所需的内存吗?第二个是否会导致延迟和响应问题?
  3. 我应该考虑更好的方法吗?

4 个答案:

答案 0 :(得分:2)

如果每种语言的数组都相同,我会在你的Utils类中使用硬编码。这肯定是最快的方式,因为如果你将它们作为资源,你的应用程序必须在运行时读取文件,这比已经在代码中使用它慢。 您的应用程序的整体大小不会像每种方法那样发生太大变化,您将在应用程序包的某个位置获得数据。无论是在代码中还是在资源中的文本文件中。实际上,由于代码中的硬编码整数以二进制形式存储为整数,因此它们需要的内存略少(java中的每个整数都需要4个字节来存储,而文本文件中的1000000000这样的整数需要10个字节。

仅当这些阵列不同时,例如不同的语言,您应该使用具有资源的解决方案。

答案 1 :(得分:1)

将数据存储在文本文件或属性文件中。一旦有请求这些细节,请在Arrays中读取它们。

然后你可以根据需要将它保存在记忆中。

答案 2 :(得分:1)

我认为将它们外部放在文件中是更好的做法,主要是因为您可以更轻松地更改它们,而无需推出新的代码和兼容性原因。例如,您可以在启动时读取它们,或者在(动态)Utils类需要时读取它们,以获得更高的效率。

如果您需要(或想要)来自应用程序的快速响应,我会毫无疑问地选择更高效率的选择(在启动时硬编码/加载一次)如果字符串相对较小。 200 Integers和100(小)Strings占用的空间非常小。一个100个字符的String[100]占用大约24个kB,而200个int占用824个字节的内存(包括数组对象开销)。

答案 3 :(得分:0)

这是通常的时间与太空交易。我会结合你提到的两种方法。从资源文件加载数组并通过一些预定义的getter方法访问它们。这允许您稍后更改您的方法,如果时间或空间成为问题,我猜它不会,而不会触及使用数组的代码