Capture IllegalArgumentException when unregistering dock receiver.

RotationButtonController uses a broadcast receiver to track the current
dock state. The controller is used in multiple spots, including
Launcher. The usage paths in Launcher are open to a race condition where
multiple threads might unregister the receiver, side stepping measures
to pair unregister with register.

This changelist catches the exception, which is consistent with other
broadcast receiver unregistration in Launcher.

Test: manual
Fixes: 275476588
Change-Id: I809dc66ae20675312c538498bbade0c0c8f4b828
This commit is contained in:
Bryce Lee
2023-03-31 09:27:14 -07:00
parent 22aca7d7b7
commit 5ed888c941

View File

@@ -66,7 +66,6 @@ import com.android.systemui.shared.system.TaskStackChangeListeners;
import java.io.PrintWriter;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Supplier;
/**
@@ -244,7 +243,12 @@ public class RotationButtonController {
mListenersRegistered = false;
mContext.unregisterReceiver(mDockedReceiver);
try {
mContext.unregisterReceiver(mDockedReceiver);
} catch (IllegalArgumentException e) {
Log.e(TAG, "Docked receiver already unregistered", e);
}
if (mRotationWatcherRegistered) {
try {
WindowManagerGlobal.getWindowManagerService().removeRotationWatcher(