From 7d6ffc676d6f131445b2b5b1576cb18051b1ed28 Mon Sep 17 00:00:00 2001 From: Dave Johnson Date: Tue, 5 Oct 2010 10:08:48 +0100 Subject: [PATCH] Update PluginManager to not call Class.forName twice --- .../src/com/phonegap/api/PluginManager.java | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/framework/src/com/phonegap/api/PluginManager.java b/framework/src/com/phonegap/api/PluginManager.java index c2e8e658..ac67ca31 100755 --- a/framework/src/com/phonegap/api/PluginManager.java +++ b/framework/src/com/phonegap/api/PluginManager.java @@ -68,11 +68,11 @@ public final class PluginManager { if (clazz != null) { c = getClassByName(clazz); } - if ((c == null) || isPhoneGapPlugin(c)) { - final Plugin plugin = this.addPlugin(clazz); + if (isPhoneGapPlugin(c)) { + final Plugin plugin = this.addPlugin(clazz, c, callbackId); final DroidGap ctx = this.ctx; runAsync = async && !plugin.isSynch(action); - if (async && !plugin.isSynch(action)) { + if (runAsync) { // Run this on a different thread so that this one can return back to JS Thread thread = new Thread(new Runnable() { public void run() { @@ -131,18 +131,31 @@ public final class PluginManager { * @return Boolean indicating if the class implements com.phonegap.api.Plugin */ private boolean isPhoneGapPlugin(Class c) { - if (c.getSuperclass().getName().equals("com.phonegap.api.Plugin")) { - return true; - } - Class[] interfaces = c.getInterfaces(); - for (int j=0; j