From beb9460538a9075a49f487f79d1cd66be0e87773 Mon Sep 17 00:00:00 2001 From: macdonst Date: Tue, 10 Jul 2012 20:50:28 -0400 Subject: [PATCH] CB-952: Android showSplashScreen crashes --- .gitignore | 1 + framework/src/org/apache/cordova/DroidGap.java | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 85278e2a..cf5f6cee 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ default.properties gen assets/www/cordova.js +framework/assets/www/.tmp* local.properties framework/proguard.cfg framework/cordova.jar diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index 1a23f226..fe47df46 100755 --- a/framework/src/org/apache/cordova/DroidGap.java +++ b/framework/src/org/apache/cordova/DroidGap.java @@ -619,10 +619,12 @@ public class DroidGap extends Activity implements CordovaInterface { // If app doesn't want to run in background if (!this.keepRunning) { - // Pause JavaScript timers (including setInterval) this.appView.pauseTimers(); } + + // hide the splash screen to avoid leaking a window + this.removeSplashScreen(); } @Override @@ -684,6 +686,9 @@ public class DroidGap extends Activity implements CordovaInterface { LOG.d(TAG, "onDestroy()"); super.onDestroy(); + // hide the splash screen to avoid leaking a window + this.removeSplashScreen(); + if (this.appView != null) { // Send destroy event to JavaScript @@ -966,7 +971,7 @@ public class DroidGap extends Activity implements CordovaInterface { * Removes the Dialog that displays the splash screen */ public void removeSplashScreen() { - if (splashDialog != null) { + if (splashDialog != null && splashDialog.isShowing()) { splashDialog.dismiss(); splashDialog = null; }