Fix mSubscriptionInfoEntity NullPointerException

Due to concurrent, mSubscriptionInfoEntity could become null when
inference.

Save the subscriptionInfoEntity to local variable to fix.

Fix: 345319514
Test: manual on MobileNetworkSettings
Change-Id: I9d286b30ade65dabdfd4a394cdbe1c1c87435d02
This commit is contained in:
Chaohui Wang
2024-06-06 14:19:33 +08:00
parent 3e650c373c
commit f2930aad5d

View File

@@ -68,7 +68,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Consumer;
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class MobileNetworkSettings extends AbstractMobileNetworkSettings implements
@@ -359,24 +358,18 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme
}
private void onSubscriptionDetailChanged() {
if (mSubscriptionInfoEntity != null) {
/**
* Update the title when SIM stats got changed
*/
final Consumer<Activity> renameTitle = activity -> {
if (activity != null && !activity.isFinishing()) {
if (activity instanceof SettingsActivity) {
((SettingsActivity) activity).setTitle(mSubscriptionInfoEntity.uniqueName);
final SubscriptionInfoEntity subscriptionInfoEntity = mSubscriptionInfoEntity;
if (subscriptionInfoEntity == null) {
return;
}
}
};
ThreadUtils.postOnMainThread(() -> {
renameTitle.accept(getActivity());
if (getActivity() instanceof SettingsActivity activity && !activity.isFinishing()) {
// Update the title when SIM stats got changed
activity.setTitle(subscriptionInfoEntity.uniqueName);
}
redrawPreferenceControllers();
});
}
}
@Override
public void onPause() {