Android开发字符串数组资源太大,崩溃的Android应用程序!

时间:2010-11-25 00:43:47

标签: java android arrays

我有一个包含大约1000个药物名称的字符串数组资源

<string-array name="index">
<item>Aspirin</item>
  <item>Levitra</item>
  ....
</string-array>

我尝试将此字符串数组加载到活动内的String []中。 使用此处的Google java文档提供的相同语法。 http://developer.android.com/guide/topics/resources/string-resource.html#StringArray

Resources res = getResources();
String[] drugs = res.getStringArray(R.array.index);

看来我的字符串数组有太多记录,导致我的应用程序崩溃(堆栈溢出?)当我将字符串数组资源减少到大约506条记录时,应用程序再次运行,但是再添加一个元素在字符串数组中会使应用程序崩溃。

我该怎么办?我想编写逻辑来过滤并对列表执行其他操作。我在应用程序中没有SQL数据库,因此无法在数据库中进行处理。有没有办法迭代字符串数组资源而不将其加载到String []?我注意到资源是一个指针。或者是否有可行的替代数据结构或方法?

谢谢,

2 个答案:

答案 0 :(得分:1)

您是否有理由不想使用SQL数据库?我强烈建议您设置一个SQLite数据库。字符串数组不是为此大小的数据设计的。你的应用程序会很慢,而且会占用大量内存。

我能想到的唯一选择是使用单个字符串并拥有一个字符串ID值数组 - 这应该可行。

答案 1 :(得分:0)

您可以使用SAX解析器来防止您的应用崩溃,如此处所述Should I be using something other than getResource().getStringArray() to populate a large array? 但是,如果您有如此庞大的数据集,则应考虑实现数据库