[Wi-Fi] Fix exception when WifiTracker2 callbacks to Wi-Fi Settings
When WifiTracker2 callbacks to Wi-Fi Settings, should check if the
activity is finishing at first.
Bug: 151677440
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=WifiSettings2Test
Change-Id: I95737eae3f67e6471c75ba845b57af2d721d5d37
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 80e5706..659ada4 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -699,4 +699,9 @@
}
getActivity().setResult(result);
}
+
+ protected boolean isFinishingOrDestroyed() {
+ final Activity activity = getActivity();
+ return activity == null || activity.isFinishing() || activity.isDestroyed();
+ }
}
diff --git a/src/com/android/settings/wifi/WifiSettings2.java b/src/com/android/settings/wifi/WifiSettings2.java
index b94994e..13ccdc3 100644
--- a/src/com/android/settings/wifi/WifiSettings2.java
+++ b/src/com/android/settings/wifi/WifiSettings2.java
@@ -674,11 +674,17 @@
@Override
public void onNumSavedNetworksChanged() {
+ if (isFinishingOrDestroyed()) {
+ return;
+ }
setAdditionalSettingsSummaries();
}
@Override
public void onNumSavedSubscriptionsChanged() {
+ if (isFinishingOrDestroyed()) {
+ return;
+ }
setAdditionalSettingsSummaries();
}
@@ -993,12 +999,10 @@
@Override
public void onFailure(int reason) {
- final Activity activity = getActivity();
- if (isFisishingOrDestroyed(activity)) {
+ if (isFinishingOrDestroyed()) {
return;
}
-
- Toast.makeText(activity, R.string.wifi_failed_connect_message, Toast.LENGTH_SHORT)
+ Toast.makeText(getContext(), R.string.wifi_failed_connect_message, Toast.LENGTH_SHORT)
.show();
}
};
@@ -1020,8 +1024,7 @@
@Override
public void onConnectResult(@ConnectStatus int status) {
- final Activity activity = getActivity();
- if (isFisishingOrDestroyed(activity)) {
+ if (isFinishingOrDestroyed()) {
return;
}
@@ -1041,10 +1044,6 @@
}
}
- private boolean isFisishingOrDestroyed(Activity activity) {
- return activity == null || activity.isFinishing() || activity.isDestroyed();
- }
-
private void launchConfigNewNetworkFragment(WifiEntry wifiEntry) {
final Bundle bundle = new Bundle();
bundle.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY,
diff --git a/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2.java b/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2.java
index 0145bb4..c70f077 100644
--- a/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2.java
+++ b/src/com/android/settings/wifi/savedaccesspoints2/SavedAccessPointsWifiSettings2.java
@@ -153,6 +153,9 @@
@Override
public void onSavedWifiEntriesChanged() {
+ if (isFinishingOrDestroyed()) {
+ return;
+ }
final PreferenceScreen screen = getPreferenceScreen();
use(SavedAccessPointsPreferenceController2.class)
.displayPreference(screen, mSavedNetworkTracker.getSavedWifiEntries());
@@ -160,6 +163,9 @@
@Override
public void onSubscriptionWifiEntriesChanged() {
+ if (isFinishingOrDestroyed()) {
+ return;
+ }
final PreferenceScreen screen = getPreferenceScreen();
use(SubscribedAccessPointsPreferenceController2.class)
.displayPreference(screen, mSavedNetworkTracker.getSubscriptionWifiEntries());