diff options
author | Winson Chung <winsonc@google.com> | 2015-07-27 17:50:13 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2015-07-27 18:35:28 -0700 |
commit | eea022530496bb5f53f9ae01fdef0cd9d0e8147d (patch) | |
tree | 904bc603294bc2e4660ba5fba9961a50a156eed9 /src/com/android/launcher3/model/WidgetsModel.java | |
parent | a9095e07ddd2318ceb81a2794219e07dd112df72 (diff) | |
download | android_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.java | 5 |
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, |