我如何优化加载很多字符串在我的android应用程序



我目前正在做一个项目,我有一个英语单词的字典列表。我使用这个列表来确定用户是否输入了一个有效的单词。整个列表相当长,我们谈论的是100k的字符串,但我已经将列表划分为更小的位。这些文件存储为xml文件,并由资产管理器访问。我使用解析器打开文件:

document = documentBuilder.parse(xmlFile);

文档是一个document对象,使用库:org.w3c.dom.Document

所以问题是,这实际上减慢了应用程序很多,即使是较小的分区文件(事实上,最初我只有一个文件与所有的100k字符串,它立即崩溃的应用程序)。那么我应该使用文本文件吗?或者我应该将数据存储在资源中而不是使用资产管理器?或者其他优化速度的方法?我愿意接受任何建议。

为什么不在sqlite表中存储单词列表呢?你会得到基于索引的搜索。如果每个条目是一个单词,那么正常的表就可以了。如果每个条目使用多个单词,那么fts表(全文搜索)解决方案将是最好的。

如果速度是最重要的(即你不关心你用了多少内存——这对于android应用程序来说是非常不寻常的),那么将单词加载到哈希表中可能会给你最快的每个单词查找。但是,在启动时加载列表需要一些时间。

所以我尝试了不同的方法,发现我没有使用分区xml文件,而是使用保存在资产文件夹中的文本文件,这大大减少了执行时间。

如果你有一个大的特性要处理,你这会使你的应用程序变慢,我建议你使用AsyncTask这样你就可以在后台做任何你想做的事情,同时你可以做另一件事,看看这个官方文档

相关内容

最新更新