summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/model/WidgetsModel.java
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2015-07-27 17:50:13 -0700
committerWinson Chung <winsonc@google.com>2015-07-27 18:35:28 -0700
commiteea022530496bb5f53f9ae01fdef0cd9d0e8147d (patch)
tree904bc603294bc2e4660ba5fba9961a50a156eed9 /src/com/android/launcher3/model/WidgetsModel.java
parenta9095e07ddd2318ceb81a2794219e07dd112df72 (diff)
downloadandroid_packages_apps_Trebuchet-eea022530496bb5f53f9ae01fdef0cd9d0e8147d.tar.gz
android_packages_apps_Trebuchet-eea022530496bb5f53f9ae01fdef0cd9d0e8147d.tar.bz2
android_packages_apps_Trebuchet-eea022530496bb5f53f9ae01fdef0cd9d0e8147d.zip
Fixing minor memory leak with name comparator.
- WidgetsAndShortcutNameComparator was using the actual widget and shortcut resolve infos as the key to the label cache. Neither of these classes override hashCode() and we were retrieving a new set of widgets and shortcuts whenever packages changed so we would end up creating more and more entries in the cache. This isn't a huge leak, but could lead to problems if Launcher is used for long periods without being killed. - Now, we use a ComponentKey as the key, so that we don't keep a reference to the widget/shortcut infos and also ensures that they should hash to the same labels. Change-Id: I91347ee72363adbc2b075b67dba331e35ab1fe34
Diffstat (limited to 'src/com/android/launcher3/model/WidgetsModel.java')
-rw-r--r--src/com/android/launcher3/model/WidgetsModel.java5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/com/android/launcher3/model/WidgetsModel.java b/src/com/android/launcher3/model/WidgetsModel.java
index 185dfcae3..cabff148f 100644
--- a/src/com/android/launcher3/model/WidgetsModel.java
+++ b/src/com/android/launcher3/model/WidgetsModel.java
@@ -39,7 +39,7 @@ public class WidgetsModel {
private ArrayList<Object> mRawList;
private final AppWidgetManagerCompat mAppWidgetMgr;
- private final Comparator mWidgetAndShortcutNameComparator;
+ private final WidgetsAndShortcutNameComparator mWidgetAndShortcutNameComparator;
private final Comparator mAppNameComparator;
private final IconCache mIconCache;
private final AppFilter mAppFilter;
@@ -103,6 +103,7 @@ public class WidgetsModel {
// clear the lists.
mWidgetsList.clear();
mPackageItemInfos.clear();
+ mWidgetAndShortcutNameComparator.reset();
// add and update.
for (Object o: rawWidgetsShortcuts) {
@@ -139,7 +140,7 @@ public class WidgetsModel {
if (widgetsShortcutsList != null) {
widgetsShortcutsList.add(o);
} else {
- widgetsShortcutsList = new ArrayList<Object>();
+ widgetsShortcutsList = new ArrayList<>();
widgetsShortcutsList.add(o);
pInfo = new PackageItemInfo(packageName);
mIconCache.getTitleAndIconForApp(packageName, userHandle,