Merge changes from topic "prp-fix" into main
* changes: Improve reliability of cleanup done in onDestroy. Change the studio build specific onEndCallback exception to a log.e
This commit is contained in:
committed by
Android (Google) Code Review
commit
a29ec52cce
@@ -92,6 +92,7 @@ import android.os.Looper;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.util.Size;
|
||||
import android.view.CrossWindowBlurListeners;
|
||||
@@ -182,6 +183,7 @@ import java.util.Map.Entry;
|
||||
* Manages the opening and closing app transitions from Launcher
|
||||
*/
|
||||
public class QuickstepTransitionManager implements OnDeviceProfileChangeListener {
|
||||
private static final String TAG = "QuickstepTransitionManager";
|
||||
|
||||
private static final boolean ENABLE_SHELL_STARTING_SURFACE =
|
||||
SystemProperties.getBoolean("persist.debug.shell_starting_surface", true);
|
||||
@@ -1207,7 +1209,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
|
||||
mLauncher.removeOnDeviceProfileChangeListener(this);
|
||||
SystemUiProxy.INSTANCE.get(mLauncher).setStartingWindowListener(null);
|
||||
if (BuildConfig.IS_STUDIO_BUILD && !mRegisteredTaskStackChangeListener.isEmpty()) {
|
||||
throw new IllegalStateException("Failed to run onEndCallback created from"
|
||||
Log.e(TAG, "IllegalState: Failed to run onEndCallback created from"
|
||||
+ " getActivityLaunchOptions()");
|
||||
}
|
||||
mRegisteredTaskStackChangeListener.forEach(TaskRestartedDuringLaunchListener::unregister);
|
||||
|
||||
@@ -86,6 +86,7 @@ import android.os.Trace;
|
||||
import android.os.UserHandle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.Display;
|
||||
import android.view.HapticFeedbackConstants;
|
||||
import android.view.KeyEvent;
|
||||
@@ -226,6 +227,7 @@ import java.util.stream.Stream;
|
||||
|
||||
public class QuickstepLauncher extends Launcher implements RecentsViewContainer,
|
||||
SystemShortcut.BubbleActivityStarter {
|
||||
private static final String TAG = "QuickstepLauncher";
|
||||
private static final boolean TRACE_LAYOUTS =
|
||||
SystemProperties.getBoolean("persist.debug.trace_layouts", false);
|
||||
private static final String TRACE_RELAYOUT_CLASS =
|
||||
@@ -561,20 +563,35 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer,
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
// wrap non-trivial clean up blocks in try-catch to avoid stopping clean up of rest of
|
||||
// objects
|
||||
|
||||
if (mAppTransitionManager != null) {
|
||||
mAppTransitionManager.onActivityDestroyed();
|
||||
try {
|
||||
mAppTransitionManager.onActivityDestroyed();
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Failed to destroy mAppTransitionManager", e);
|
||||
}
|
||||
}
|
||||
mAppTransitionManager = null;
|
||||
mIsPredictiveBackToHomeInProgress = false;
|
||||
|
||||
if (mUnfoldTransitionProgressProvider != null) {
|
||||
SystemUiProxy.INSTANCE.get(this).setUnfoldAnimationListener(null);
|
||||
mUnfoldTransitionProgressProvider.destroy();
|
||||
try {
|
||||
SystemUiProxy.INSTANCE.get(this).setUnfoldAnimationListener(null);
|
||||
mUnfoldTransitionProgressProvider.destroy();
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Failed to destroy mUnfoldTransitionProgressProvider", e);
|
||||
}
|
||||
}
|
||||
|
||||
OverviewComponentObserver.INSTANCE.get(this)
|
||||
.removeOverviewChangeListener(mOverviewChangeListener);
|
||||
mTISBindHelper.onDestroy();
|
||||
try {
|
||||
mTISBindHelper.onDestroy();
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Failed to destroy mTISBindHelper", e);
|
||||
}
|
||||
|
||||
if (mLauncherUnfoldAnimationController != null) {
|
||||
mLauncherUnfoldAnimationController.onDestroy();
|
||||
@@ -584,15 +601,22 @@ public class QuickstepLauncher extends Launcher implements RecentsViewContainer,
|
||||
mSplitSelectStateController.onDestroy();
|
||||
}
|
||||
|
||||
RecentsView recentsView = getOverviewPanel();
|
||||
if (recentsView != null) {
|
||||
recentsView.destroy();
|
||||
try {
|
||||
RecentsView recentsView = getOverviewPanel();
|
||||
if (recentsView != null) {
|
||||
recentsView.destroy();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "Failed to destroy RecentsView", e);
|
||||
}
|
||||
|
||||
super.onDestroy();
|
||||
mHotseatPredictionController.destroy();
|
||||
if (mViewCapture != null) mViewCapture.close();
|
||||
removeBackAnimationCallback(mSplitSelectStateController.getSplitBackHandler());
|
||||
try {
|
||||
super.onDestroy();
|
||||
} finally { // trivial close operations in finally.
|
||||
mHotseatPredictionController.destroy();
|
||||
if (mViewCapture != null) mViewCapture.close();
|
||||
removeBackAnimationCallback(mSplitSelectStateController.getSplitBackHandler());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user