3

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

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

现在,我想知道:

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

4 回答 4

2

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

只有当这些数组对于不同的语言是不同的时,您才应该使用具有资源的解决方案。

于 2013-04-21T07:27:15.413 回答
1

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

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

于 2013-04-21T07:17:01.760 回答
1

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

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

于 2013-04-21T07:32:55.950 回答
0

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

于 2013-04-21T07:32:01.933 回答