diff --git a/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java b/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java
index 9febba3..5ea9b3c 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherSwitchBarController.java
@@ -58,6 +58,9 @@
     private final WifiManager mWifiManager;
 
     @VisibleForTesting
+    boolean mIsSwitchBusy;
+
+    @VisibleForTesting
     DataSaverBackend mDataSaverBackend;
     @VisibleForTesting
     final ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
@@ -102,8 +105,8 @@
 
     @Override
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-        // Filter out unnecessary callbacks when switch is disabled.
-        if (!buttonView.isEnabled()) return;
+        // Filter out inappropriate callbacks when switch is busy.
+        if (mIsSwitchBusy) return;
 
         if (isChecked) {
             startTether();
@@ -115,14 +118,14 @@
     void stopTether() {
         if (!isWifiApActivated()) return;
 
-        mSwitchBar.setEnabled(false);
+        mIsSwitchBusy = true;
         mConnectivityManager.stopTethering(TETHERING_WIFI);
     }
 
     void startTether() {
         if (isWifiApActivated()) return;
 
-        mSwitchBar.setEnabled(false);
+        mIsSwitchBusy = true;
         mConnectivityManager.startTethering(TETHERING_WIFI, true /* showProvisioningUi */,
                 mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));
     }
@@ -159,6 +162,7 @@
 
     private void updateWifiSwitch() {
         mSwitchBar.setEnabled(!mDataSaverBackend.isDataSaverEnabled());
+        mIsSwitchBusy = false;
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java
index 0982f26..32e3a61 100644
--- a/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSwitchBarControllerTest.java
@@ -147,8 +147,8 @@
     }
 
     @Test
-    public void onSwitchChanged_switchNotEnabled_doNothingForTethering() {
-        when(mSwitch.isEnabled()).thenReturn(false);
+    public void onSwitchChanged_switchIsBusy_doNothingForTethering() {
+        mController.mIsSwitchBusy = true;
 
         mController.onCheckedChanged(mSwitch, true);
 
