summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2011-08-18 12:12:41 -0700
committerWinson Chung <winsonc@google.com>2011-08-18 12:15:28 -0700
commit5308f24d4b66b020202b88eff672f5a89096ebb6 (patch)
tree6c7e9f4c633cd3e7d2bef552c2e53fc3951f6c9c /src
parentc273c5814d7b312628107ad4a7bff9cc64e89eae (diff)
downloadandroid_packages_apps_Trebuchet-5308f24d4b66b020202b88eff672f5a89096ebb6.tar.gz
android_packages_apps_Trebuchet-5308f24d4b66b020202b88eff672f5a89096ebb6.tar.bz2
android_packages_apps_Trebuchet-5308f24d4b66b020202b88eff672f5a89096ebb6.zip
Fixing label cache issue due to different ResolveInfos being returned in different parts of loading, saves 1-10% on AllApps load. (5042022)
Change-Id: I17166bd6a50858ff76c475688fff9a9eaeba6010
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher2/IconCache.java7
-rw-r--r--src/com/android/launcher2/LauncherModel.java28
2 files changed, 23 insertions, 12 deletions
diff --git a/src/com/android/launcher2/IconCache.java b/src/com/android/launcher2/IconCache.java
index b2ebe2ac3..247e164ec 100644
--- a/src/com/android/launcher2/IconCache.java
+++ b/src/com/android/launcher2/IconCache.java
@@ -183,12 +183,13 @@ public class IconCache {
mCache.put(componentName, entry);
- if (labelCache != null && labelCache.containsKey(info)) {
- entry.title = labelCache.get(info).toString();
+ ComponentName key = LauncherModel.getComponentNameFromResolveInfo(info);
+ if (labelCache != null && labelCache.containsKey(key)) {
+ entry.title = labelCache.get(key).toString();
} else {
entry.title = info.loadLabel(mPackageManager).toString();
if (labelCache != null) {
- labelCache.put(info, entry.title);
+ labelCache.put(key, entry.title);
}
}
if (entry.title == null) {
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index c46e1758f..547d51f2c 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -1539,12 +1539,13 @@ public class LauncherModel extends BroadcastReceiver {
// from the resource
if (resolveInfo != null) {
- if (labelCache != null && labelCache.containsKey(resolveInfo)) {
- info.title = labelCache.get(resolveInfo);
+ ComponentName key = LauncherModel.getComponentNameFromResolveInfo(resolveInfo);
+ if (labelCache != null && labelCache.containsKey(key)) {
+ info.title = labelCache.get(key);
} else {
info.title = resolveInfo.activityInfo.loadLabel(manager);
if (labelCache != null) {
- labelCache.put(resolveInfo, info.title);
+ labelCache.put(key, info.title);
}
}
}
@@ -1823,6 +1824,13 @@ public class LauncherModel extends BroadcastReceiver {
return sCollator.compare(a.label.toString(), b.label.toString());
}
};
+ static ComponentName getComponentNameFromResolveInfo(ResolveInfo info) {
+ if (info.activityInfo != null) {
+ return new ComponentName(info.activityInfo.packageName, info.activityInfo.name);
+ } else {
+ return new ComponentName(info.serviceInfo.packageName, info.serviceInfo.name);
+ }
+ }
public static class ShortcutNameComparator implements Comparator<ResolveInfo> {
private PackageManager mPackageManager;
private HashMap<Object, CharSequence> mLabelCache;
@@ -1836,19 +1844,21 @@ public class LauncherModel extends BroadcastReceiver {
}
public final int compare(ResolveInfo a, ResolveInfo b) {
CharSequence labelA, labelB;
- if (mLabelCache.containsKey(a)) {
- labelA = mLabelCache.get(a);
+ ComponentName keyA = LauncherModel.getComponentNameFromResolveInfo(a);
+ ComponentName keyB = LauncherModel.getComponentNameFromResolveInfo(b);
+ if (mLabelCache.containsKey(keyA)) {
+ labelA = mLabelCache.get(keyA);
} else {
labelA = a.loadLabel(mPackageManager).toString();
- mLabelCache.put(a, labelA);
+ mLabelCache.put(keyA, labelA);
}
- if (mLabelCache.containsKey(b)) {
- labelB = mLabelCache.get(b);
+ if (mLabelCache.containsKey(keyB)) {
+ labelB = mLabelCache.get(keyB);
} else {
labelB = b.loadLabel(mPackageManager).toString();
- mLabelCache.put(b, labelB);
+ mLabelCache.put(keyB, labelB);
}
return sCollator.compare(labelA, labelB);
}