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

Commit eef3ed66 authored by Alex Chau's avatar Alex Chau Committed by Automerger Merge Worker
Browse files

Merge "Destroy activity/view references to avoid memory leak" into sc-v2-dev...

Merge "Destroy activity/view references to avoid memory leak" into sc-v2-dev am: 683b4cd8 am: f1c38718

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

Change-Id: I0144c29e4ca9e0ea04d831f4473b4fd6ccf21a8f
parents ef14a307 f1c38718
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) {
    }
}