Merge "Settings: Fix WifiSettings FC when rotating screen"
This commit is contained in:
@@ -190,6 +190,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
|
||||
// Worker thread used for WifiPickerTracker work
|
||||
private HandlerThread mWorkerThread;
|
||||
private Handler mMainHandler;
|
||||
private Handler mWorkerHandler;
|
||||
|
||||
@VisibleForTesting
|
||||
WifiPickerTracker mWifiPickerTracker;
|
||||
@@ -290,11 +292,13 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
return SystemClock.elapsedRealtime();
|
||||
}
|
||||
};
|
||||
|
||||
mMainHandler = new Handler(Looper.getMainLooper());
|
||||
mWorkerHandler = mWorkerThread.getThreadHandler();
|
||||
mWifiPickerTracker = FeatureFactory.getFactory(context)
|
||||
.getWifiTrackerLibProvider()
|
||||
.createWifiPickerTracker(getSettingsLifecycle(), context,
|
||||
new Handler(Looper.getMainLooper()),
|
||||
mWorkerThread.getThreadHandler(),
|
||||
mMainHandler, mWorkerHandler,
|
||||
elapsedRealtimeClock,
|
||||
MAX_SCAN_AGE_MILLIS,
|
||||
SCAN_INTERVAL_MILLIS,
|
||||
@@ -366,6 +370,10 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
if (mWifiEnabler != null) {
|
||||
mWifiEnabler.teardownSwitchController();
|
||||
}
|
||||
|
||||
// remove all msg and callback in main handler and worker handler
|
||||
mMainHandler.removeCallbacksAndMessages(null);
|
||||
mWorkerHandler.removeCallbacksAndMessages(null);
|
||||
mWorkerThread.quit();
|
||||
|
||||
super.onDestroyView();
|
||||
@@ -650,7 +658,7 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
/** Called when the state of Wifi has changed. */
|
||||
@Override
|
||||
public void onWifiStateChanged() {
|
||||
if (mIsRestricted) {
|
||||
if (mIsRestricted || isFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
final int wifiState = mWifiPickerTracker.getWifiState();
|
||||
@@ -688,6 +696,10 @@ public class WifiSettings extends RestrictedSettingsFragment
|
||||
|
||||
@Override
|
||||
public void onWifiEntriesChanged() {
|
||||
if (isFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mIsWifiEntryListStale) {
|
||||
mIsWifiEntryListStale = false;
|
||||
updateWifiEntryPreferences();
|
||||
|
@@ -277,6 +277,11 @@ public class WifiSettingsTest {
|
||||
|
||||
@Test
|
||||
public void onWifiEntriesChanged_shouldChangeNextButtonState() {
|
||||
final FragmentActivity activity = mock(FragmentActivity.class);
|
||||
doReturn(false).when(activity).isFinishing();
|
||||
doReturn(false).when(activity).isDestroyed();
|
||||
doReturn(activity).when(mWifiSettings).getActivity();
|
||||
|
||||
mWifiSettings.onWifiEntriesChanged();
|
||||
|
||||
verify(mWifiSettings).changeNextButtonState(anyBoolean());
|
||||
|
Reference in New Issue
Block a user