From d52f97152f0e7426b772a727197bb700095c1630 Mon Sep 17 00:00:00 2001 From: linguokun Date: Mon, 4 Mar 2019 19:19:44 +0800 Subject: [PATCH 1/2] advoid crash when activity finishing --- .../main/java/wendu/dsbridge/DWebView.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/dsbridge/src/main/java/wendu/dsbridge/DWebView.java b/dsbridge/src/main/java/wendu/dsbridge/DWebView.java index 0513243..7301b10 100644 --- a/dsbridge/src/main/java/wendu/dsbridge/DWebView.java +++ b/dsbridge/src/main/java/wendu/dsbridge/DWebView.java @@ -679,6 +679,20 @@ public boolean onJsAlert(WebView view, String url, final String message, final J return true; } } + + 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; + } + } + } + Dialog alertDialog = new AlertDialog.Builder(getContext()). setMessage(message). setCancelable(false). @@ -717,6 +731,20 @@ public void onClick(DialogInterface dialog, int which) { } } }; + + 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; + } + } + } + new AlertDialog.Builder(getContext()) .setMessage(message) .setCancelable(false) @@ -765,6 +793,20 @@ public void onClick(DialogInterface dialog, int which) { } } }; + + 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; + } + } + } + new AlertDialog.Builder(getContext()) .setTitle(message) .setView(editText) From d18086bcf5c6641b19d4e88b8ac479555da7d0a8 Mon Sep 17 00:00:00 2001 From: linguokun Date: Mon, 4 Mar 2019 19:29:24 +0800 Subject: [PATCH 2/2] advoid crash and extract method --- .../main/java/wendu/dsbridge/DWebView.java | 55 +++++++------------ 1 file changed, 19 insertions(+), 36 deletions(-) diff --git a/dsbridge/src/main/java/wendu/dsbridge/DWebView.java b/dsbridge/src/main/java/wendu/dsbridge/DWebView.java index 7301b10..acdf46b 100644 --- a/dsbridge/src/main/java/wendu/dsbridge/DWebView.java +++ b/dsbridge/src/main/java/wendu/dsbridge/DWebView.java @@ -680,18 +680,7 @@ public boolean onJsAlert(WebView view, String url, final String message, final J } } - 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; - } - } - } + if (isActivityFinishing()) return true; Dialog alertDialog = new AlertDialog.Builder(getContext()). setMessage(message). @@ -732,18 +721,7 @@ public void onClick(DialogInterface dialog, int which) { } }; - 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; - } - } - } + if (isActivityFinishing()) return true; new AlertDialog.Builder(getContext()) .setMessage(message) @@ -794,18 +772,7 @@ public void onClick(DialogInterface dialog, int which) { } }; - 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; - } - } - } + if (isActivityFinishing()) return true; new AlertDialog.Builder(getContext()) .setTitle(message) @@ -949,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);