static final String LOG = "QuickDicApp";
+ // If set to false, avoid use of ICU collator
+ // Works well enough for most european languages,
+ // gives faster startup and avoids crashes on some
+ // devices due to Dalvik bugs (e.g. ARMv6, S5570i, CM11).
+ // Leave it enabled by default for correctness.
+ static public final boolean USE_COLLATOR = true;
+
// Static, determined by resources (and locale).
// Unordered.
static Map<String, DictionaryInfo> DOWNLOADABLE_UNCOMPRESSED_FILENAME_NAME_TO_DICTIONARY_INFO = null;
PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, dictionaryConfig);
}
- final Collator collator = Collator.getInstance();
+ final Comparator collator = USE_COLLATOR ? Collator.getInstance() : String.CASE_INSENSITIVE_ORDER;
final Comparator<String> uncompressedFilenameComparator = new Comparator<String>() {
@Override
public int compare(String uncompressedFilename1, String uncompressedFilename2) {
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
int start = 0;
int end = sortedIndexEntries.size();
- final Collator sortCollator = sortLanguage.getCollator();
+ final Comparator sortCollator = sortLanguage.getCollator();
while (start < end) {
final int mid = (start + end) / 2;
if (interrupted.get()) {
\r
package com.hughes.android.dictionary.engine;\r
\r
+import com.hughes.android.dictionary.DictionaryApplication;\r
import com.ibm.icu.text.Collator;\r
\r
+import java.util.Comparator;\r
import java.util.LinkedHashMap;\r
import java.util.Locale;\r
import java.util.Map;\r
return isoCode;\r
}\r
\r
- public synchronized Collator getCollator() {\r
+ public synchronized Comparator getCollator() {\r
+ if (!DictionaryApplication.USE_COLLATOR)\r
+ return String.CASE_INSENSITIVE_ORDER;\r
// Don't think this is thread-safe...\r
// if (collator == null) {\r
this.collator = Collator.getInstance(locale);\r