ViewRootImpl: lazy initialization of mFastScrollSoundEffectsEnabled

mFastScrollSoundEffectsEnabled was initialized in the constructor
from a used-once instance of AudioManager.
Move initialization of this varialble to a lazy-initialization
where mAudioManager is also lazy-initialized, getAudioManager(),
which is only ever called in playSoundEffect(int), which reads
mFastScrollSoundEffectsEnabled.

Bug: 272459959
Bug: 266370934
Test: see steps in bug
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:a5ba10f05931bba7be80e2484ed3889b04764c62)
Merged-In: Ib0bd59288197c05b13b9cb8a69d79960338c3c18
Change-Id: Ib0bd59288197c05b13b9cb8a69d79960338c3c18
This commit is contained in:
Jean-Michel Trivi
2023-03-10 21:53:40 +00:00
committed by Cherrypicker Worker
parent 10be070b98
commit 76536d72f6

View File

@@ -417,7 +417,8 @@ public final class ViewRootImpl implements ViewParent,
private boolean mUseBLASTAdapter;
private boolean mForceDisableBLAST;
private boolean mFastScrollSoundEffectsEnabled;
/** lazily-initialized in getAudioManager() */
private boolean mFastScrollSoundEffectsEnabled = false;
/**
* Signals that compatibility booleans have been initialized according to
@@ -1028,8 +1029,6 @@ public final class ViewRootImpl implements ViewParent,
loadSystemProperties();
mImeFocusController = new ImeFocusController(this);
AudioManager audioManager = mContext.getSystemService(AudioManager.class);
mFastScrollSoundEffectsEnabled = audioManager.areNavigationRepeatSoundEffectsEnabled();
mScrollCaptureRequestTimeout = SCROLL_CAPTURE_REQUEST_TIMEOUT_MILLIS;
mOnBackInvokedDispatcher = new WindowOnBackInvokedDispatcher(context);
@@ -8340,6 +8339,7 @@ public final class ViewRootImpl implements ViewParent,
}
if (mAudioManager == null) {
mAudioManager = (AudioManager) mView.getContext().getSystemService(Context.AUDIO_SERVICE);
mFastScrollSoundEffectsEnabled = mAudioManager.areNavigationRepeatSoundEffectsEnabled();
}
return mAudioManager;
}