diff options
author | Michael Jurka <mikejurka@google.com> | 2011-11-30 20:28:53 -0800 |
---|---|---|
committer | Michael Jurka <mikejurka@google.com> | 2011-11-30 20:30:17 -0800 |
commit | 05bf644e371c9d965ba864cf7dda6515c7cdce91 (patch) | |
tree | e901c8f2e4b0a6fbca4b57cbd77729355241d7cd /src | |
parent | 3924df85ac6ee052648944f271f947930e71e53a (diff) | |
download | android_packages_apps_Trebuchet-05bf644e371c9d965ba864cf7dda6515c7cdce91.tar.gz android_packages_apps_Trebuchet-05bf644e371c9d965ba864cf7dda6515c7cdce91.tar.bz2 android_packages_apps_Trebuchet-05bf644e371c9d965ba864cf7dda6515c7cdce91.zip |
Fix memory leak in Launcher
Leak happened when a stack view was on the
workspace and then workspace forced a rebind of
its items (for example, when an app was installed)
Bug # 5629171
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 1 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherModel.java | 5 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index f9c7bf070..864fca5be 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -2920,6 +2920,7 @@ public final class Launcher extends Activity final CellLayout layoutParent = (CellLayout) workspace.getChildAt(i); layoutParent.removeAllViewsInLayout(); } + mWidgetsToAdvance.clear(); if (mHotseat != null) { mHotseat.resetLayout(); } diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index e2ddf1b49..7da55db6d 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -176,12 +176,16 @@ public class LauncherModel extends BroadcastReceiver { // Ensure that we don't use the same workspace items data structure on the main thread // by making a copy of workspace items first. final ArrayList<ItemInfo> workspaceItems = new ArrayList<ItemInfo>(sWorkspaceItems); + final ArrayList<ItemInfo> appWidgets = new ArrayList<ItemInfo>(sAppWidgets); mHandler.post(new Runnable() { @Override public void run() { for (ItemInfo item : workspaceItems) { item.unbind(); } + for (ItemInfo item : appWidgets) { + item.unbind(); + } } }); @@ -1229,7 +1233,6 @@ public class LauncherModel extends BroadcastReceiver { } }); - // Unbind previously bound workspace items to prevent a leak of AppWidgetHostViews. final ArrayList<ItemInfo> workspaceItems = unbindWorkspaceItemsOnMainThread(); // Add the items to the workspace. |