*/
public synchronized Transliterator normalizer() {
if (normalizer == null) {
- normalizer = Transliterator
- .createFromRules("", normalizerRules, Transliterator.FORWARD);
+ normalizer = TransliteratorManager.get(normalizerRules);
}
return normalizer;
}
package com.hughes.android.dictionary.engine;
+import android.support.v4.util.LruCache;
+
import com.ibm.icu.text.Transliterator;
import java.util.ArrayList;
private static boolean starting = false;
private static boolean ready = false;
+ private static LruCache<String, Transliterator> cache = new LruCache<String, Transliterator>(4);
// Whom to notify when we're all set up and ready to go.
private static List<Callback> callbacks = new ArrayList<TransliteratorManager.Callback>();
+ public static synchronized Transliterator get(String rules) {
+ Transliterator result = cache.get(rules);
+ if (result == null) {
+ result = Transliterator.createFromRules("", rules, Transliterator.FORWARD);
+ cache.put(rules, result);
+ }
+ return result;
+ }
+
public static synchronized boolean init(final Callback callback) {
if (ready) {
return true;
@Override
public void run() {
System.out.println("Starting Transliterator load.");
- final String transliterated =
- Transliterator
- .createFromRules(
- "",
- Language.en.getDefaultNormalizerRules(),
- Transliterator.FORWARD).transliterate("Îñţérñåţîöñåļîžåţîờñ");
+ final String transliterated = get(Language.en.getDefaultNormalizerRules()).transliterate("Îñţérñåţîöñåļîžåţîờñ");
if (!"internationalization".equals(transliterated)) {
System.out.println("Wrong transliteration: " + transliterated);
}