[Misc] Only create KeyguardStatusBarViewController once inside

NotificationPanelViewController.

The KeyguardStatusBarView never changes, so we don't need to
re-create its controller in NPVController#updateViewControllers.

Fixes: 194181195
Test: atest and manual

Change-Id: If955a8d6167a08bec6e7a7e9e66a2c6a55f68966
Merged-In: If955a8d6167a08bec6e7a7e9e66a2c6a55f68966
This commit is contained in:
Caitlin Cassidy
2021-08-02 14:37:45 +00:00
parent e2d1f53333
commit da6f1e80af
4 changed files with 6 additions and 40 deletions

View File

@@ -107,12 +107,6 @@ public class BatteryMeterViewController extends ViewController<BatteryMeterView>
@Override
protected void onViewDetached() {
destroy();
}
@Override
public void destroy() {
super.destroy();
mConfigurationController.removeCallback(mConfigurationListener);
unsubscribeFromTunerUpdates();
mCurrentUserTracker.stopTracking();

View File

@@ -159,17 +159,6 @@ public class KeyguardStatusBarViewController extends ViewController<KeyguardStat
@Override
protected void onViewDetached() {
destroy();
}
@Override
public void destroy() {
// Don't receive future #onViewAttached calls so that we don't accidentally have two
// controllers registered for the same view.
// TODO(b/194181195): This shouldn't be necessary.
super.destroy();
mBatteryMeterViewController.destroy();
mConfigurationController.removeCallback(mConfigurationListener);
mAnimationScheduler.removeCallback(mAnimationCallback);
mUserInfoController.removeCallback(mOnUserInfoChangedListener);

View File

@@ -884,10 +884,14 @@ public class NotificationPanelViewController extends PanelViewController {
}
}
mKeyguardStatusBarViewController =
mKeyguardStatusBarViewComponentFactory.build(mKeyguardStatusBar)
.getKeyguardStatusBarViewController();
mKeyguardStatusBarViewController.init();
updateViewControllers(
mView.findViewById(R.id.keyguard_status_view),
userAvatarView,
mKeyguardStatusBar,
keyguardUserSwitcherView);
mNotificationContainerParent = mView.findViewById(R.id.notification_container_parent);
NotificationStackScrollLayout stackScrollLayout = mView.findViewById(
@@ -979,7 +983,6 @@ public class NotificationPanelViewController extends PanelViewController {
private void updateViewControllers(KeyguardStatusView keyguardStatusView,
UserAvatarView userAvatarView,
KeyguardStatusBarView keyguardStatusBarView,
KeyguardUserSwitcherView keyguardUserSwitcherView) {
// Re-associate the KeyguardStatusViewController
KeyguardStatusViewComponent statusViewComponent =
@@ -987,16 +990,6 @@ public class NotificationPanelViewController extends PanelViewController {
mKeyguardStatusViewController = statusViewComponent.getKeyguardStatusViewController();
mKeyguardStatusViewController.init();
KeyguardStatusBarViewComponent statusBarViewComponent =
mKeyguardStatusBarViewComponentFactory.build(keyguardStatusBarView);
if (mKeyguardStatusBarViewController != null) {
// TODO(b/194181195): This shouldn't be necessary.
mKeyguardStatusBarViewController.destroy();
}
mKeyguardStatusBarViewController =
statusBarViewComponent.getKeyguardStatusBarViewController();
mKeyguardStatusBarViewController.init();
if (mKeyguardUserSwitcherController != null) {
// Try to close the switcher so that callbacks are triggered if necessary.
// Otherwise, NPV can get into a state where some of the views are still hidden
@@ -1156,7 +1149,7 @@ public class NotificationPanelViewController extends PanelViewController {
mBigClockContainer.removeAllViews();
updateViewControllers(mView.findViewById(R.id.keyguard_status_view), userAvatarView,
mKeyguardStatusBar, keyguardUserSwitcherView);
keyguardUserSwitcherView);
// Update keyguard bottom area
int index = mView.indexOfChild(mKeyguardBottomArea);

View File

@@ -109,16 +109,6 @@ public abstract class ViewController<T extends View> {
}
}
/**
* Destroys this controller so that it never receives view attach and detach events again.
* Does nothing if the view is null.
*/
public void destroy() {
if (mView != null) {
mView.removeOnAttachStateChangeListener(mOnAttachStateListener);
}
}
/**
* Called when the view is attached and a call to {@link #init()} has been made in either order.
*/