[Wi-Fi] Quit worker thread in WifiNetworkListFragment

Should quit worker thread when a fragment is about to
be destroyed.

Bug: 145100890
Test: make RunSettingsRoboTests ROBOTEST_FILTER=WifiNetworkListFragmentTest
Change-Id: I840750ac4e9601fe553ce219305876581bea7197
This commit is contained in:
Arc Wang
2020-05-15 11:02:39 +08:00
parent 29d45e2d6b
commit fa128687ae
2 changed files with 22 additions and 1 deletions

View File

@@ -73,7 +73,7 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
private static final long SCAN_INTERVAL_MILLIS = 10_000; private static final long SCAN_INTERVAL_MILLIS = 10_000;
@VisibleForTesting SavedNetworkTracker mSavedNetworkTracker; @VisibleForTesting SavedNetworkTracker mSavedNetworkTracker;
private HandlerThread mWorkerThread; @VisibleForTesting HandlerThread mWorkerThread;
// Container Activity must implement this interface // Container Activity must implement this interface
public interface OnChooseNetworkListener { public interface OnChooseNetworkListener {
@@ -158,6 +158,13 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
this); this);
} }
@Override
public void onDestroyView() {
mWorkerThread.quit();
super.onDestroyView();
}
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);

View File

@@ -30,6 +30,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.HandlerThread;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceCategory;
@@ -139,4 +140,17 @@ public class WifiNetworkListFragmentTest {
verify(mWifiNetworkListFragment.mOnChooseNetworkListener).onChooseNetwork(any()); verify(mWifiNetworkListFragment.mOnChooseNetworkListener).onChooseNetwork(any());
} }
@Test
public void onDestroy_quitWorkerThread() {
mWifiNetworkListFragment.mWorkerThread = mock(HandlerThread.class);
try {
mWifiNetworkListFragment.onDestroyView();
} catch (IllegalArgumentException e) {
// Ignore the exception from super class.
}
verify(mWifiNetworkListFragment.mWorkerThread).quit();
}
} }