From b76c5b856d75cb83826ac49a5f900dae8d63dc17 Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Tue, 5 Dec 2017 08:54:12 +0100 Subject: [PATCH 1/3] Check for activity finishing and destroyed on dialog dismiss --- .../org/devio/rn/splashscreen/SplashScreen.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java b/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java index 575d3f8e..6637a944 100644 --- a/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java +++ b/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java @@ -70,13 +70,24 @@ public static void hide(Activity activity) { } activity = mActivity.get(); } + if (activity == null) return; - activity.runOnUiThread(new Runnable() { + final Activity _activity = activity; + + _activity.runOnUiThread(new Runnable() { @Override public void run() { - if (mSplashDialog != null && mSplashDialog.isShowing()) { - mSplashDialog.dismiss(); + if (mSplashDialog != null && mSplashDialog.isShowing() && !_activity.isFinishing()) { + boolean isDestroyed = false; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + isDestroyed = _activity.isDestroyed(); + } + + if (!isDestroyed) { + mSplashDialog.dismiss(); + } mSplashDialog = null; } } From 6a582ae95f6073349f1cbad8d170249748ffe55f Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Tue, 5 Dec 2017 09:16:11 +0100 Subject: [PATCH 2/3] isFinishing check just before dismiss --- .../src/main/java/org/devio/rn/splashscreen/SplashScreen.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java b/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java index 6637a944..91ab536c 100644 --- a/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java +++ b/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java @@ -78,14 +78,14 @@ public static void hide(Activity activity) { _activity.runOnUiThread(new Runnable() { @Override public void run() { - if (mSplashDialog != null && mSplashDialog.isShowing() && !_activity.isFinishing()) { + if (mSplashDialog != null && mSplashDialog.isShowing()) { boolean isDestroyed = false; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { isDestroyed = _activity.isDestroyed(); } - if (!isDestroyed) { + if (!_activity.isFinishing() && !isDestroyed) { mSplashDialog.dismiss(); } mSplashDialog = null; From 1271c4fd8dfca16ac53a91cbcb129dee9b73a9ae Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Tue, 5 Dec 2017 09:27:05 +0100 Subject: [PATCH 3/3] Missing import --- .../src/main/java/org/devio/rn/splashscreen/SplashScreen.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java b/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java index 91ab536c..c995c2c3 100644 --- a/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java +++ b/android/src/main/java/org/devio/rn/splashscreen/SplashScreen.java @@ -2,6 +2,7 @@ import android.app.Activity; import android.app.Dialog; +import android.os.Build; import java.lang.ref.WeakReference;