From 656e94cc06fc7557fb3f1e53a5f27fa46f80034b Mon Sep 17 00:00:00 2001 From: tmfang Date: Fri, 27 Jul 2018 18:41:23 +0800 Subject: [PATCH] Fix leaked windows exception in WifiDialogActivity WifiDialog was created by WifiDialogActivity. If activity was destroyed suddenly, WifiDialog can't dismiss itself. So, we need to dismiss dialog, when activity was destroyed. Test: robo and manual test Bug: 111841375 Change-Id: I8aaf1c78e72144bf7c9cbc2392bce30e715d86e9 --- src/com/android/settings/wifi/WifiDialogActivity.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/wifi/WifiDialogActivity.java b/src/com/android/settings/wifi/WifiDialogActivity.java index e5526c9a7c..d8648557af 100644 --- a/src/com/android/settings/wifi/WifiDialogActivity.java +++ b/src/com/android/settings/wifi/WifiDialogActivity.java @@ -52,6 +52,8 @@ public class WifiDialogActivity extends Activity implements WifiDialog.WifiDialo @VisibleForTesting static final String KEY_CONNECT_FOR_CALLER = "connect_for_caller"; + private WifiDialog mDialog; + @Override protected void onCreate(Bundle savedInstanceState) { final Intent intent = getIntent(); @@ -67,10 +69,10 @@ public class WifiDialogActivity extends Activity implements WifiDialog.WifiDialo accessPoint = new AccessPoint(this, accessPointState); } - WifiDialog dialog = WifiDialog.createModal( + mDialog = WifiDialog.createModal( this, this, accessPoint, WifiConfigUiBase.MODE_CONNECT); - dialog.show(); - dialog.setOnDismissListener(this); + mDialog.show(); + mDialog.setOnDismissListener(this); } @Override @@ -80,6 +82,15 @@ public class WifiDialogActivity extends Activity implements WifiDialog.WifiDialo } @Override + public void onDestroy() { + super.onDestroy(); + if (mDialog != null && mDialog.isShowing()) { + mDialog.dismiss(); + mDialog = null; + } + } + + @Override public void onForget(WifiDialog dialog) { final WifiManager wifiManager = getSystemService(WifiManager.class); final AccessPoint accessPoint = dialog.getController().getAccessPoint(); @@ -147,6 +158,7 @@ public class WifiDialogActivity extends Activity implements WifiDialog.WifiDialo @Override public void onDismiss(DialogInterface dialogInterface) { + mDialog = null; finish(); } } -- 2.11.0