Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f9c971e authored by Adam Cohen's avatar Adam Cohen
Browse files

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
parent 5fd733db
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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;

+0 −8
Original line number Diff line number Diff line
@@ -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;
+17 −2
Original line number Diff line number Diff line
@@ -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();
            }
        }
    }

+4 −0
Original line number Diff line number Diff line
@@ -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;