aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-05-25 04:11:15 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-05-25 04:11:15 -0700
commitf27ac2733cc00b7f5f8c7a840027001a5e8a2702 (patch)
treeff609279691466b9843dcd17f8fcc02ab0fd1bac /java/src
parent64766fbcaabd57f6dbd303126f5021a38590a9fc (diff)
parentd45e334f5a73d2cc36800a81e1bbf881e633f026 (diff)
downloadlatinime-f27ac2733cc00b7f5f8c7a840027001a5e8a2702.tar.gz
latinime-f27ac2733cc00b7f5f8c7a840027001a5e8a2702.tar.xz
latinime-f27ac2733cc00b7f5f8c7a840027001a5e8a2702.zip
am d45e334f: am 7707e045: Merge "Cache application info." into jb-dev
* commit 'd45e334f5a73d2cc36800a81e1bbf881e633f026': Cache application info.
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java9
-rw-r--r--java/src/com/android/inputmethod/latin/TargetApplicationGetter.java12
2 files changed, 17 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 221f38354..298ea2e55 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -668,9 +668,12 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
Log.w(TAG, "Use EditorInfo.IME_FLAG_FORCE_ASCII flag instead");
}
- mTargetApplicationInfo = null;
- new TargetApplicationGetter(this /* context */, this /* listener */)
- .execute(editorInfo.packageName);
+ mTargetApplicationInfo =
+ TargetApplicationGetter.getCachedApplicationInfo(editorInfo.packageName);
+ if (null == mTargetApplicationInfo) {
+ new TargetApplicationGetter(this /* context */, this /* listener */)
+ .execute(editorInfo.packageName);
+ }
LatinImeLogger.onStartInputView(editorInfo);
// In landscape mode, this method gets called without the input view being created.
diff --git a/java/src/com/android/inputmethod/latin/TargetApplicationGetter.java b/java/src/com/android/inputmethod/latin/TargetApplicationGetter.java
index 109f23f4c..46300b479 100644
--- a/java/src/com/android/inputmethod/latin/TargetApplicationGetter.java
+++ b/java/src/com/android/inputmethod/latin/TargetApplicationGetter.java
@@ -20,9 +20,19 @@ import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
+import android.util.LruCache;
public class TargetApplicationGetter extends AsyncTask<String, Void, ApplicationInfo> {
+ private static final int MAX_CACHE_ENTRIES = 64; // arbitrary
+ private static LruCache<String, ApplicationInfo> sCache =
+ new LruCache<String, ApplicationInfo>(MAX_CACHE_ENTRIES);
+
+ public static ApplicationInfo getCachedApplicationInfo(final String packageName) {
+ return sCache.get(packageName);
+ }
+ // TODO: Wipe the cache when new packages are installed.
+
public interface OnTargetApplicationKnownListener {
public void onTargetApplicationKnown(final ApplicationInfo info);
}
@@ -38,12 +48,12 @@ public class TargetApplicationGetter extends AsyncTask<String, Void, Application
@Override
protected ApplicationInfo doInBackground(final String... packageName) {
- // TODO: cache app info. Wipe the cache when new packages are installed.
final PackageManager pm = mContext.getPackageManager();
mContext = null; // Bazooka-powered anti-leak device
try {
final ApplicationInfo targetAppInfo =
pm.getApplicationInfo(packageName[0], 0 /* flags */);
+ sCache.put(packageName[0], targetAppInfo);
return targetAppInfo;
} catch (android.content.pm.PackageManager.NameNotFoundException e) {
return null;