Fixing a couple nav bar crashes am: a7c9bec46c am: a6c44d252b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15744882 Change-Id: If62341a0b2ccd1ba1364473dab420525a5209ee4
This commit is contained in:
@@ -422,6 +422,12 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
||||
new Handler(Looper.getMainLooper())) {
|
||||
@Override
|
||||
public void onChange(boolean selfChange, Uri uri) {
|
||||
// TODO(b/198002034): Content observers currently can still be called back after being
|
||||
// unregistered, and in this case we can ignore the change if the nav bar has been
|
||||
// destroyed already
|
||||
if (mNavigationBarView == null) {
|
||||
return;
|
||||
}
|
||||
updateAssistantEntrypoints();
|
||||
}
|
||||
};
|
||||
@@ -648,7 +654,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
||||
if (mIsOnDefaultDisplay) {
|
||||
final RotationButtonController rotationButtonController =
|
||||
mNavigationBarView.getRotationButtonController();
|
||||
rotationButtonController.addRotationCallback(mRotationWatcher);
|
||||
rotationButtonController.setRotationCallback(mRotationWatcher);
|
||||
|
||||
// Reset user rotation pref to match that of the WindowManager if starting in locked
|
||||
// mode. This will automatically happen when switching from auto-rotate to locked mode.
|
||||
@@ -687,6 +693,9 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
|
||||
|
||||
@Override
|
||||
public void onViewDetachedFromWindow(View v) {
|
||||
final RotationButtonController rotationButtonController =
|
||||
mNavigationBarView.getRotationButtonController();
|
||||
rotationButtonController.setRotationCallback(null);
|
||||
mNavigationBarView.getBarTransitions().destroy();
|
||||
mNavigationBarView.getLightTransitionsController().destroy(mContext);
|
||||
mOverviewProxyService.removeCallback(mOverviewProxyListener);
|
||||
|
||||
@@ -279,7 +279,7 @@ public class NavigationBarView extends FrameLayout implements
|
||||
new RotationButtonUpdatesCallback() {
|
||||
@Override
|
||||
public void onVisibilityChanged(boolean visible) {
|
||||
if (visible) {
|
||||
if (visible && mAutoHideController != null) {
|
||||
// If the button will actually become visible and the navbar is about
|
||||
// to hide, tell the statusbar to keep it around for longer
|
||||
mAutoHideController.touchAutoHide();
|
||||
|
||||
@@ -183,7 +183,7 @@ public class RotationButtonController {
|
||||
TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener);
|
||||
}
|
||||
|
||||
void addRotationCallback(Consumer<Integer> watcher) {
|
||||
void setRotationCallback(Consumer<Integer> watcher) {
|
||||
mRotWatcherListener = watcher;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user