]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Add flag to avoid using ICU collator.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Wed, 9 Dec 2015 22:55:14 +0000 (23:55 +0100)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Wed, 9 Dec 2015 22:55:14 +0000 (23:55 +0100)
src/com/hughes/android/dictionary/DictionaryApplication.java
src/com/hughes/android/dictionary/engine/Index.java
src/com/hughes/android/dictionary/engine/Language.java

index d63553825430153b01bec1c25e6a34e13cf2d486..b415501fd15cdd502743c4fb374a5cc7bfb4092f 100644 (file)
@@ -61,6 +61,13 @@ public class DictionaryApplication extends Application {
 
     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;
@@ -539,7 +546,7 @@ public class DictionaryApplication extends Application {
         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) {
index 63867081a6623aa60ec344ce33b8b3fea2d562df..990521630aa24862314423aa06bea4a85cd8b885 100644 (file)
@@ -41,6 +41,7 @@ import java.util.AbstractList;
 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;
@@ -291,7 +292,7 @@ public final class Index implements RAFSerializable<Index> {
         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()) {
index eaa11b622424a3f26efc5ac2f87f2bd168c1b8c3..78085f6a26eb498d38b8b7d26cfa9da6440b6d1d 100644 (file)
 \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
@@ -62,7 +64,9 @@ public class Language {
         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