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

Commit eaa208bb authored by Hyunyoung Song's avatar Hyunyoung Song Committed by Automerger Merge Worker
Browse files

All apps memory leak fix / unregister data observer am: 6e72c8bb

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15687067

Change-Id: I16c9cfc4aec2fa36e1fe465e0093eba1b7b475bf
parents da403a97 6e72c8bb
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -499,8 +499,10 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo

    private void replaceRVContainer(boolean showTabs) {
        for (int i = 0; i < mAH.length; i++) {
            if (mAH[i].recyclerView != null) {
                mAH[i].recyclerView.setLayoutManager(null);
            AllAppsRecyclerView rv = mAH[i].recyclerView;
            if (rv != null) {
                rv.setLayoutManager(null);
                rv.setAdapter(null);
            }
        }
        View oldView = getRecyclerViewContainer();
+13 −5
Original line number Diff line number Diff line
@@ -63,6 +63,13 @@ public class AllAppsRecyclerView extends BaseRecyclerView {
    private final SparseIntArray mCachedScrollPositions = new SparseIntArray();
    private final AllAppsFastScrollHelper mFastScrollHelper;


    private final AdapterDataObserver mObserver = new RecyclerView.AdapterDataObserver() {
        public void onChanged() {
            mCachedScrollPositions.clear();
        }
    };

    // The empty-search result background
    private AllAppsBackgroundDrawable mEmptySearchBackground;
    private int mEmptySearchBackgroundTopOffset;
@@ -247,12 +254,13 @@ public class AllAppsRecyclerView extends BaseRecyclerView {

    @Override
    public void setAdapter(Adapter adapter) {
        if (getAdapter() != null) {
            getAdapter().unregisterAdapterDataObserver(mObserver);
        }
        super.setAdapter(adapter);
        adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
            public void onChanged() {
                mCachedScrollPositions.clear();
        if (adapter != null) {
            adapter.registerAdapterDataObserver(mObserver);
        }
        });
    }

    @Override