diff --git a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java index 008df248eb0..a48358f8be6 100644 --- a/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java +++ b/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragment.java @@ -124,6 +124,9 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements List mResultCodeArrayList; @VisibleForTesting WifiPickerTracker mWifiPickerTracker; + // Worker thread used for WifiPickerTracker work + @VisibleForTesting + HandlerThread mWorkerThread; private boolean mIsSingleNetwork; private boolean mAnyNetworkSavedSuccess; @@ -133,8 +136,6 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements private UiConfigurationItemAdapter mUiConfigurationItemAdapter; private WifiManager.ActionListener mSaveListener; private WifiManager mWifiManager; - // Worker thread used for WifiPickerTracker work - private HandlerThread mWorkerThread; private final Handler mHandler = new Handler() { @Override @@ -202,6 +203,13 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements return inflater.inflate(R.layout.wifi_add_app_networks, container, false); } + @Override + public void onDestroy() { + mWorkerThread.quit(); + + super.onDestroy(); + } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java index ac25689da4f..3f02e2e2c6e 100644 --- a/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java +++ b/tests/robotests/src/com/android/settings/wifi/addappnetworks/AddAppNetworksFragmentTest.java @@ -19,7 +19,9 @@ package com.android.settings.wifi.addappnetworks; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.settings.SettingsEnums; @@ -27,6 +29,7 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.net.wifi.WifiNetworkSuggestion; import android.os.Bundle; +import android.os.HandlerThread; import android.os.Parcelable; import android.provider.Settings; import android.widget.TextView; @@ -247,6 +250,19 @@ public class AddAppNetworksFragmentTest { SCANED_LEVEL0); } + @Test + public void onDestroy_quitWorkerThread() { + mAddAppNetworksFragment.mWorkerThread = mock(HandlerThread.class); + + try { + mAddAppNetworksFragment.onDestroy(); + } catch (IllegalArgumentException e) { + // Ignore the exception from super class. + } + + verify(mAddAppNetworksFragment.mWorkerThread).quit(); + } + private void setUpOneScannedNetworkWithScanedLevel4() { final ArrayList list = new ArrayList<>(); list.add(mMockWifiEntry);