diff --git a/dsbridge/src/main/java/wendu/dsbridge/DWebView.java b/dsbridge/src/main/java/wendu/dsbridge/DWebView.java index 0513243..acdf46b 100644 --- a/dsbridge/src/main/java/wendu/dsbridge/DWebView.java +++ b/dsbridge/src/main/java/wendu/dsbridge/DWebView.java @@ -679,6 +679,9 @@ public boolean onJsAlert(WebView view, String url, final String message, final J return true; } } + + if (isActivityFinishing()) return true; + Dialog alertDialog = new AlertDialog.Builder(getContext()). setMessage(message). setCancelable(false). @@ -717,6 +720,9 @@ public void onClick(DialogInterface dialog, int which) { } } }; + + if (isActivityFinishing()) return true; + new AlertDialog.Builder(getContext()) .setMessage(message) .setCancelable(false) @@ -765,6 +771,9 @@ public void onClick(DialogInterface dialog, int which) { } } }; + + if (isActivityFinishing()) return true; + new AlertDialog.Builder(getContext()) .setTitle(message) .setView(editText) @@ -907,6 +916,22 @@ public void openFileChooser(ValueCallback valueCallback, String acceptType) { }; + private boolean isActivityFinishing() { + Context context = getContext(); + if (context instanceof Activity) { + Activity activity = (Activity) context; + if (activity.isFinishing()) { + return true; + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + if (activity.isDestroyed()) { + return true; + } + } + } + return false; + } + @Override public void clearCache(boolean includeDiskFiles) { super.clearCache(includeDiskFiles);