Merge "Only register listeners if setView was success." into sc-qpr1-dev am: f16f863023

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16091135

Change-Id: I74a7c0dc68c26310bb8dcbda1418fa5a1af5c7b5
This commit is contained in:
Wei Sheng Shih
2021-11-15 01:38:21 +00:00
committed by Automerger Merge Worker

View File

@@ -800,11 +800,7 @@ public final class ViewRootImpl implements ViewParent,
context); context);
mCompatibleVisibilityInfo = new SystemUiVisibilityInfo(); mCompatibleVisibilityInfo = new SystemUiVisibilityInfo();
mAccessibilityManager = AccessibilityManager.getInstance(context); mAccessibilityManager = AccessibilityManager.getInstance(context);
mAccessibilityManager.addAccessibilityStateChangeListener(
mAccessibilityInteractionConnectionManager, mHandler);
mHighContrastTextManager = new HighContrastTextManager(); mHighContrastTextManager = new HighContrastTextManager();
mAccessibilityManager.addHighTextContrastStateChangeListener(
mHighContrastTextManager, mHandler);
mViewConfiguration = ViewConfiguration.get(context); mViewConfiguration = ViewConfiguration.get(context);
mDensity = context.getResources().getDisplayMetrics().densityDpi; mDensity = context.getResources().getDisplayMetrics().densityDpi;
mNoncompatDensity = context.getResources().getDisplayMetrics().noncompatDensityDpi; mNoncompatDensity = context.getResources().getDisplayMetrics().noncompatDensityDpi;
@@ -1004,8 +1000,6 @@ public final class ViewRootImpl implements ViewParent,
mView = view; mView = view;
mAttachInfo.mDisplayState = mDisplay.getState(); mAttachInfo.mDisplayState = mDisplay.getState();
mDisplayManager.registerDisplayListener(mDisplayListener, mHandler);
mViewLayoutDirectionInitial = mView.getRawLayoutDirection(); mViewLayoutDirectionInitial = mView.getRawLayoutDirection();
mFallbackEventHandler.setView(view); mFallbackEventHandler.setView(view);
mWindowAttributes.copyFrom(attrs); mWindowAttributes.copyFrom(attrs);
@@ -1198,6 +1192,7 @@ public final class ViewRootImpl implements ViewParent,
"Unable to add window -- unknown error code " + res); "Unable to add window -- unknown error code " + res);
} }
registerListeners();
if ((res & WindowManagerGlobal.ADD_FLAG_USE_BLAST) != 0) { if ((res & WindowManagerGlobal.ADD_FLAG_USE_BLAST) != 0) {
mUseBLASTAdapter = true; mUseBLASTAdapter = true;
} }
@@ -1254,6 +1249,28 @@ public final class ViewRootImpl implements ViewParent,
} }
} }
/**
* Register any kind of listeners if setView was success.
*/
private void registerListeners() {
mAccessibilityManager.addAccessibilityStateChangeListener(
mAccessibilityInteractionConnectionManager, mHandler);
mAccessibilityManager.addHighTextContrastStateChangeListener(
mHighContrastTextManager, mHandler);
mDisplayManager.registerDisplayListener(mDisplayListener, mHandler);
}
/**
* Unregister all listeners while detachedFromWindow.
*/
private void unregisterListeners() {
mAccessibilityManager.removeAccessibilityStateChangeListener(
mAccessibilityInteractionConnectionManager);
mAccessibilityManager.removeHighTextContrastStateChangeListener(
mHighContrastTextManager);
mDisplayManager.unregisterDisplayListener(mDisplayListener);
}
private void setTag() { private void setTag() {
final String[] split = mWindowAttributes.getTitle().toString().split("\\."); final String[] split = mWindowAttributes.getTitle().toString().split("\\.");
if (split.length > 0) { if (split.length > 0) {
@@ -4979,10 +4996,6 @@ public final class ViewRootImpl implements ViewParent,
} }
mAccessibilityInteractionConnectionManager.ensureNoConnection(); mAccessibilityInteractionConnectionManager.ensureNoConnection();
mAccessibilityManager.removeAccessibilityStateChangeListener(
mAccessibilityInteractionConnectionManager);
mAccessibilityManager.removeHighTextContrastStateChangeListener(
mHighContrastTextManager);
removeSendWindowContentChangedCallback(); removeSendWindowContentChangedCallback();
destroyHardwareRenderer(); destroyHardwareRenderer();
@@ -5015,8 +5028,7 @@ public final class ViewRootImpl implements ViewParent,
mInputEventReceiver = null; mInputEventReceiver = null;
} }
mDisplayManager.unregisterDisplayListener(mDisplayListener); unregisterListeners();
unscheduleTraversals(); unscheduleTraversals();
} }