From 8ca1804de966cdb578aa07540d5f4d31e064cced Mon Sep 17 00:00:00 2001 From: Dave Johnson Date: Sat, 7 Aug 2010 12:19:04 -0700 Subject: [PATCH] the plugins were executing on the UI thread. now on background thread. calls to loadUrl are now automatically on the ui thread --- framework/src/com/phonegap/DroidGap.java | 8 ++++++-- framework/src/com/phonegap/api/CommandManager.java | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/framework/src/com/phonegap/DroidGap.java b/framework/src/com/phonegap/DroidGap.java index 8771da3d..f559e0d5 100755 --- a/framework/src/com/phonegap/DroidGap.java +++ b/framework/src/com/phonegap/DroidGap.java @@ -280,9 +280,13 @@ public class DroidGap extends Activity { } } - public void loadUrl(String url) + public void loadUrl(final String url) { - this.appView.loadUrl(url); + this.runOnUiThread(new Runnable() { + public void run() { + DroidGap.this.appView.loadUrl(url); + } + }); } /** diff --git a/framework/src/com/phonegap/api/CommandManager.java b/framework/src/com/phonegap/api/CommandManager.java index 9a53f592..b3a9c804 100644 --- a/framework/src/com/phonegap/api/CommandManager.java +++ b/framework/src/com/phonegap/api/CommandManager.java @@ -65,12 +65,12 @@ public final class CommandManager { plugin.setView(this.app); if (async) { - // Run this async on the UI thread so that JavaScript can continue on - app.post(new Runnable() { + // Run this on a different thread so that this one can return back to JS + Thread thread = new Thread(new Runnable() { public void run() { // Call execute on the plugin so that it can do it's thing CommandResult cr = plugin.execute(action, args); - // Check if the + // Check the status for 0 (success) or otherwise if (cr.getStatus() == 0) { app.loadUrl(cr.toSuccessCallbackString(callbackId)); } else { @@ -78,7 +78,7 @@ public final class CommandManager { } } }); - // Return "" + thread.start(); return ""; } else { // Call execute on the plugin so that it can do it's thing