[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:
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user