我目前正在开展一个项目,我有一个英语单词的词典列表。我使用此列表来确定用户是否输入了有效字。整个列表相当冗长,正在讨论10万个字符串,但我已将列表分成较小的位。这些文件存储为xml文件,并由assetmanager访问。我使用解析器打开文件:
document = documentBuilder.parse(xmlFile);
该文档是使用库的文档对象:org.w3c.dom.Document
所以问题是这实际上减慢了应用程序A LOT,即使使用较小的分区文件(实际上最初我只有一个文件包含所有100k字符串并且它立即崩溃了应用程序)。我应该使用文本文件吗?或者我应该将数据存储在资源中而不是使用资产管理器?或者任何其他方式来优化速度?我愿意接受任何建议。
答案 0 :(得分:2)
为什么不将单词列表存储在sqlite表中?您获得了基于索引的搜索。如果每个条目都是一个单词,那么普通表就可以了。如果您每个条目使用多个单词,那么fts table(全文搜索)解决方案将是最佳选择。
如果速度是最重要的(即你不在乎你用了多少内存 - 对于Android应用来说这是非常不寻常的),那么将这些单词加载到hashtable可能会给你每个单词查找最快。但是,在启动时加载列表需要一些时间。
答案 1 :(得分:1)
所以我正在使用不同的方法,并发现不使用分区的xml文件,而是使用保存在资产文件夹中的文本文件,这大大减少了执行时间。
答案 2 :(得分:0)
如果你有很大的处理方式,那么我这会使你的应用变慢,我建议你使用 AsyncTask ,以便你可以在backGround中做你想做的事情,同时你可以做另外,请看看official documentation