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

This commit is contained in:
Alex Chau
2021-12-03 12:30:49 +00:00
committed by Android (Google) Code Review
2 changed files with 46 additions and 0 deletions
@@ -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);
}
}
/**
@@ -0,0 +1,29 @@
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) {
}
}