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

Commit 573fca80 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Destroy activity/view references to avoid memory leak

Bug: 204891006
Change-Id: If60ac1716c30ebe68fb6e7457d71f542d3075422
parent b15d3cfe
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
@@ -96,6 +97,7 @@ import com.android.quickstep.GestureState.GestureEndTarget;
import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle;
import com.android.quickstep.util.ActiveGestureLog;
import com.android.quickstep.util.ActivityInitListener;
import com.android.launcher3.util.ActivityLifecycleCallbacksAdapter;
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.InputConsumerProxy;
import com.android.quickstep.util.InputProxyHandlerFactory;
@@ -153,6 +155,17 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
    protected MultiStateCallback mStateCallback;
    protected boolean mCanceled;
    private boolean mRecentsViewScrollLinked = false;
    private final ActivityLifecycleCallbacksAdapter mLifecycleCallbacks =
            new ActivityLifecycleCallbacksAdapter() {
                @Override
                public void onActivityDestroyed(Activity activity) {
                    if (mActivity != activity) {
                        return;
                    }
                    mRecentsView = null;
                    mActivity = null;
                }
            };

    private static int getFlagForIndex(int index, String name) {
        if (DEBUG_STATES) {
@@ -416,6 +429,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
        setupRecentsViewUi();
        linkRecentsViewScroll();

        mActivity.registerActivityLifecycleCallbacks(mLifecycleCallbacks);
        return true;
    }

@@ -1542,6 +1556,9 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,

    private void reset() {
        mStateCallback.setStateOnUiThread(STATE_HANDLER_INVALIDATED);
        if (mActivity != null) {
            mActivity.unregisterActivityLifecycleCallbacks(mLifecycleCallbacks);
        }
    }

    /**
+29 −0
Original line number Diff line number Diff line
package com.android.launcher3.util;

import android.app.Activity;
import android.app.Application.ActivityLifecycleCallbacks;
import android.os.Bundle;

public interface ActivityLifecycleCallbacksAdapter extends ActivityLifecycleCallbacks {

    default void onActivityCreated(Activity activity, Bundle bundle) {
    }

    default void onActivityDestroyed(Activity activity) {
    }

    default void onActivityPaused(Activity activity) {
    }

    default void onActivityResumed(Activity activity) {
    }

    default void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    }

    default void onActivityStarted(Activity activity) {
    }

    default void onActivityStopped(Activity activity) {
    }
}