From 2313eff05b8f52e72ebe06c589c419941fa019d6 Mon Sep 17 00:00:00 2001 From: Patrick Dubroy Date: Tue, 11 Jan 2011 20:01:31 -0800 Subject: Allow previous view hierarchy to be GC'ed more quickly on rotation Change-Id: I76215a48e76234501b7ce253dedfa449502ab88f --- src/com/android/launcher2/Launcher.java | 11 +++++++++++ src/com/android/launcher2/LauncherAppWidgetHost.java | 6 ++++++ src/com/android/launcher2/LauncherModel.java | 3 +++ src/com/android/launcher2/PagedViewWithDraggableItems.java | 6 ++++++ 4 files changed, 26 insertions(+) (limited to 'src/com/android') diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index e5d22996f..2281c8477 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -106,6 +106,7 @@ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -1313,6 +1314,7 @@ public final class Launcher extends Activity (System.currentTimeMillis() - mAutoAdvanceSentTime)); } mHandler.removeMessages(ADVANCE_MSG); + mHandler.removeMessages(0); // Remove messages sent using postDelayed() } } } @@ -1493,6 +1495,9 @@ public final class Launcher extends Activity } catch (NullPointerException ex) { Log.w(TAG, "problem while stopping AppWidgetHost during Launcher destruction", ex); } + mAppWidgetHost = null; + + mWidgetsToAdvance.clear(); TextKeyListener.getInstance().release(); @@ -1511,6 +1516,11 @@ public final class Launcher extends Activity } unregisterReceiver(mCloseSystemDialogsReceiver); + + ((ViewGroup) mWorkspace.getParent()).removeAllViews(); + mWorkspace.removeAllViews(); + mWorkspace = null; + mDragController = null; } @Override @@ -1977,6 +1987,7 @@ public final class Launcher extends Activity for (ItemInfo item: mDesktopItems) { item.unbind(); } + mDesktopItems.clear(); } /** diff --git a/src/com/android/launcher2/LauncherAppWidgetHost.java b/src/com/android/launcher2/LauncherAppWidgetHost.java index 46e66e7ac..68d4903da 100644 --- a/src/com/android/launcher2/LauncherAppWidgetHost.java +++ b/src/com/android/launcher2/LauncherAppWidgetHost.java @@ -36,4 +36,10 @@ public class LauncherAppWidgetHost extends AppWidgetHost { AppWidgetProviderInfo appWidget) { return new LauncherAppWidgetHostView(context); } + + @Override + public void stopListening() { + super.stopListening(); + clearViews(); + } } diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index 713268ad6..7e7261038 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -492,6 +492,9 @@ public class LauncherModel extends BroadcastReceiver { mLoaderTask.stopLocked(); } } + mItems.clear(); + mAppWidgets.clear(); + mFolders.clear(); } /** diff --git a/src/com/android/launcher2/PagedViewWithDraggableItems.java b/src/com/android/launcher2/PagedViewWithDraggableItems.java index f24d7e05d..3f722921a 100644 --- a/src/com/android/launcher2/PagedViewWithDraggableItems.java +++ b/src/com/android/launcher2/PagedViewWithDraggableItems.java @@ -150,4 +150,10 @@ public abstract class PagedViewWithDraggableItems extends PagedView public void setDragSlopeThreshold(float dragSlopeThreshold) { mDragSlopeThreshold = dragSlopeThreshold; } + + @Override + protected void onDetachedFromWindow() { + mLastTouchedItem = null; + super.onDetachedFromWindow(); + } } -- cgit v1.2.3