Adding a couple memory optimizations to Launcher

-> Always dispose of widget page views when leaving the activity.
   These pages hold onto many bitmaps.
-> Clear database cache when leaving the activity.

Bug: 17967108
Change-Id: I10ebaaed14e7cd86f09a9afcabd73043705f21b8
This commit is contained in:
Adam Cohen 2014-10-31 11:48:25 -07:00
parent 5fd733dbae
commit 3f9c971e76
4 changed files with 23 additions and 10 deletions

View File

@ -1476,7 +1476,9 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
}
}
@Override
public void reset() {
super.reset();
// If we have reset, then we should not continue to restore the previous state
mSaveInstanceStateItemIndex = -1;

View File

@ -141,14 +141,6 @@ public class AppsCustomizeTabHost extends FrameLayout implements LauncherTransit
mPagedView.loadAssociatedPages(mPagedView.getCurrentPage());
}
}
public void onTrimMemory() {
mContent.setVisibility(GONE);
// Clear the widget pages of all their subviews - this will trigger the widget previews
// to delete their bitmaps
mPagedView.clearAllWidgetPages();
}
@Override
public ViewGroup getContent() {
return mPagedView;

View File

@ -50,6 +50,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@ -3568,6 +3569,9 @@ public class Launcher extends Activity
if (mSearchDropTargetBar != null) {
mSearchDropTargetBar.hideSearchBar(false);
}
// This can hold unnecessary references to views.
mStateAnimation = null;
}
});
@ -3853,6 +3857,9 @@ public class Launcher extends Activity
content.setCurrentPage(content.getNextPage());
mAppsCustomizeContent.updateCurrentPageScroll();
// This can hold unnecessary references to views.
mStateAnimation = null;
}
});
@ -3896,8 +3903,16 @@ public class Launcher extends Activity
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) {
mAppsCustomizeTabHost.onTrimMemory();
if (level >= ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
// The widget preview db can result in holding onto over
// 3MB of memory for caching which isn't necessary.
SQLiteDatabase.releaseMemory();
// We reset the apps customize tray in order to
// to free all the memory associated with widget previews
if (mAppsCustomizeTabHost != null) {
mAppsCustomizeTabHost.reset();
}
}
}

View File

@ -91,6 +91,10 @@ public abstract class PagedViewWithDraggableItems extends PagedView
return super.onTouchEvent(ev);
}
public void reset() {
mLastTouchedItem = null;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
mLastTouchedItem = v;