diff --git a/src/com/android/settings/wifi/dpp/WifiNetworkListFragment.java b/src/com/android/settings/wifi/dpp/WifiNetworkListFragment.java index 57b1feb18e2..9f8d0dc5794 100644 --- a/src/com/android/settings/wifi/dpp/WifiNetworkListFragment.java +++ b/src/com/android/settings/wifi/dpp/WifiNetworkListFragment.java @@ -73,7 +73,7 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen private static final long SCAN_INTERVAL_MILLIS = 10_000; @VisibleForTesting SavedNetworkTracker mSavedNetworkTracker; - private HandlerThread mWorkerThread; + @VisibleForTesting HandlerThread mWorkerThread; // Container Activity must implement this interface public interface OnChooseNetworkListener { @@ -158,6 +158,13 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen this); } + @Override + public void onDestroyView() { + mWorkerThread.quit(); + + super.onDestroyView(); + } + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); diff --git a/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkListFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkListFragmentTest.java index f212a90367c..70f2b1a581f 100644 --- a/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkListFragmentTest.java +++ b/tests/robotests/src/com/android/settings/wifi/dpp/WifiNetworkListFragmentTest.java @@ -30,6 +30,7 @@ import android.content.Context; import android.content.Intent; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; +import android.os.HandlerThread; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; @@ -139,4 +140,17 @@ public class WifiNetworkListFragmentTest { 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(); + } }