[Wi-Fi] Fix thread leak in WifiConnectionPreferenceController
Stop the worker thread for WifiPickerTracker at onDestroy event. The event will be triggered when users click back button at 'Network & internet' page. Bug: 161659380 Test: manual 1. Launch Settings 'Network & internet'. 2. Use below command to observe the thread. ps -T SettingsProcessId | grep WifiConnPrefCtr 3. Click back button and use the command again, the thread should not exist. Change-Id: I9145d534ade168beca52524e7cf85d87e2feb1a0
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user