diff --git a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java index 742edd196dd..13d50821264 100644 --- a/src/com/android/settings/wifi/WifiConnectionPreferenceController.java +++ b/src/com/android/settings/wifi/WifiConnectionPreferenceController.java @@ -29,6 +29,8 @@ import android.os.SimpleClock; import android.os.SystemClock; import androidx.annotation.VisibleForTesting; +import androidx.lifecycle.LifecycleObserver; +import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; @@ -50,7 +52,7 @@ import java.time.ZoneOffset; * controller class when there is a wifi connection present. */ public class WifiConnectionPreferenceController extends AbstractPreferenceController implements - WifiPickerTracker.WifiPickerTrackerCallback { + WifiPickerTracker.WifiPickerTrackerCallback, LifecycleObserver { private static final String TAG = "WifiConnPrefCtrl"; @@ -97,6 +99,7 @@ public class WifiConnectionPreferenceController extends AbstractPreferenceContro UpdateListener updateListener, String preferenceGroupKey, int order, int metricsCategory) { super(context); + lifecycle.addObserver(this); mUpdateListener = updateListener; mPreferenceGroupKey = preferenceGroupKey; this.order = order; @@ -124,6 +127,14 @@ public class WifiConnectionPreferenceController extends AbstractPreferenceContro this); } + /** + * This event is triggered when users click back button at 'Network & internet'. + */ + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + public void onDestroy() { + mWorkerThread.quit(); + } + @Override public boolean isAvailable() { return mWifiPickerTracker.getConnectedWifiEntry() != null;