2014-03-25 48 views
1

我目前正在一個項目中,我有一個英語單詞的詞典列表。我使用此列表來確定用戶是否輸入了有效的單詞。整個列表相當長,正在談論100k字符串,但我已將列表分成較小的位。這些文件存儲爲xml文件,並由assetmanager訪問。我使用解析器來打開文件:如何在我的android應用程序中優化加載大量字符串?

document = documentBuilder.parse(xmlFile);

該文件是使用該庫的Document對象:org.w3c.dom.Document中

所以問題是,這實際上會減慢應用了很多,即使有更小的分區文件(其實最初我只有一個文件包含所有100k字符串,並立即崩潰了應用程序)。那麼我應該使用文本文件嗎?或者,而不是使用assetmanager我應該存儲我的數據資源?或者其他方式來優化這個問題的速度?我願意接受任何建議。

+0

我真的希望解決同樣的問題。我在同一個視圖中加載了180個textviews –

回答

2

爲什麼不把表單存儲在sqlite表中?您獲得基於索引的搜索。如果每個條目都是一個單詞,那麼普通表格就可以。如果每個條目使用多個詞,那麼fts table(全文搜索)解決方案將是最好的。

如果速度是最重要的(即你不關心你使用多少內存了 - 這將是一個Android應用程序非常不尋常的),然後裝載字到​​3210可能給你每個字查找最快。然而,在啓動時加載列表需要一些時間。

+0

我要去嘗試sqlite表,看看它的速度是否夠快,謝謝你的回覆 –

+0

以下是FTS表的一些性能指標(使用Enron Email數據集--517,000+文檔)https:/ /www.sqlite.org/fts3.html#section_1 – NameSpace

0

,如果你有一個大TRAITEMENT對付你這個我讓你的應用程序慢,我recommande您使用的AsyncTask,這樣你可以做你在後臺什麼都想要,同時你可以做其他的事情,拿看一看official documentation

1

所以我在玩弄不同的方法,發現不是使用分區的xml文件,而是使用保存在資源文件夾中的文本文件,這大大減少了執行時間。

+0

它是否優化了大量的加載或者我應該使用sqlite? –

相關問題