Merge "[Wi-Fi] Fix thread leak in WifiConnectionPreferenceController"

This commit is contained in:
TreeHugger Robot
2020-08-06 08:03:00 +00:00
committed by Android (Google) Code Review

View File

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