Safeguard against NPE race condition.
It is possible for the main activity to be quit before the posted
message is executed, safeguard against NPEs in this scenario.
Bug: 73484470
Test: runtest --path frameworks/base/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.jav
Change-Id: I34b40089ef2eae213c804e4e379d6ab7825bbceb
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index b380ac5..c5c1169 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -1048,14 +1048,19 @@
if (newLevel > 0 && newLevel != oldLevel) {
// Only update labels on visible rssi changes
updateSpeed();
- if (mAccessPointListener != null) {
- ThreadUtils.postOnMainThread(() -> mAccessPointListener.onLevelChanged(this));
- }
+ ThreadUtils.postOnMainThread(() -> {
+ if (mAccessPointListener != null) {
+ mAccessPointListener.onLevelChanged(this);
+ }
+ });
+
}
- if (mAccessPointListener != null) {
- ThreadUtils.postOnMainThread(() -> mAccessPointListener.onAccessPointChanged(this));
- }
+ ThreadUtils.postOnMainThread(() -> {
+ if (mAccessPointListener != null) {
+ mAccessPointListener.onAccessPointChanged(this);
+ }
+ });
if (!scanResults.isEmpty()) {
ScanResult result = scanResults.iterator().next();
@@ -1102,10 +1107,18 @@
mNetworkInfo = null;
}
if (updated && mAccessPointListener != null) {
- ThreadUtils.postOnMainThread(() -> mAccessPointListener.onAccessPointChanged(this));
+ ThreadUtils.postOnMainThread(() -> {
+ if (mAccessPointListener != null) {
+ mAccessPointListener.onAccessPointChanged(this);
+ }
+ });
if (oldLevel != getLevel() /* current level */) {
- ThreadUtils.postOnMainThread(() -> mAccessPointListener.onLevelChanged(this));
+ ThreadUtils.postOnMainThread(() -> {
+ if (mAccessPointListener != null) {
+ mAccessPointListener.onLevelChanged(this);
+ }
+ });
}
}
@@ -1115,9 +1128,11 @@
void update(@Nullable WifiConfiguration config) {
mConfig = config;
networkId = config != null ? config.networkId : WifiConfiguration.INVALID_NETWORK_ID;
- if (mAccessPointListener != null) {
- ThreadUtils.postOnMainThread(() -> mAccessPointListener.onAccessPointChanged(this));
- }
+ ThreadUtils.postOnMainThread(() -> {
+ if (mAccessPointListener != null) {
+ mAccessPointListener.onAccessPointChanged(this);
+ }
+ });
}
@VisibleForTesting