package com.anysoftkeyboard.dictionaries;
import android.os.AsyncTask;
import com.anysoftkeyboard.utils.Log;
import java.lang.ref.WeakReference;
/**
* A generic AsyncTask to load AnySoftKeyboard's dictionary object.
* User: menny
* Date: 3/19/13
* Time: 11:52 AM
*/
public class DictionaryASyncLoader extends AsyncTask<Dictionary, Void, Dictionary> {
private static final String TAG = "ASK_DictionaryASyncLoader";
private final WeakReference<Listener> mListener;
private Exception mException = null;
public DictionaryASyncLoader(Listener listener) {
mListener = new WeakReference<Listener>(listener);
}
@Override
protected Dictionary doInBackground(Dictionary... dictionaries) {
Dictionary dictionary = dictionaries[0];
if (!dictionary.isClosed()) {
try {
dictionary.loadDictionary();
} catch (Exception e) {
Log.w(TAG, "Failed to load dictionary!", e);
mException = e;
}
}
return dictionary;
}
@Override
protected void onPostExecute(Dictionary dictionary) {
super.onPostExecute(dictionary);
if (!dictionary.isClosed()) {
if (mException != null) {
dictionary.close();
}
Listener listener = mListener.get();
if (listener == null) return;
if (mException == null) {
listener.onDictionaryLoadingDone(dictionary);
} else {
listener.onDictionaryLoadingFailed(dictionary, mException);
}
}
}
public static interface Listener {
void onDictionaryLoadingDone(Dictionary dictionary);
void onDictionaryLoadingFailed(Dictionary dictionary, Exception exception);
}
}