You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2012/09/28 20:12:17 UTC

[2/2] android commit: Add an app-wide thead pool to CordovaInterface.

Add an app-wide thead pool to CordovaInterface.


Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/afcdccf7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/afcdccf7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/afcdccf7

Branch: refs/heads/master
Commit: afcdccf78370b62936d1fe36fe7b46129a34aeb3
Parents: 1bf1284
Author: Andrew Grieve <ag...@chromium.org>
Authored: Mon Sep 24 15:30:59 2012 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Fri Sep 28 14:10:13 2012 -0400

----------------------------------------------------------------------
 framework/src/org/apache/cordova/DroidGap.java     |    9 +++++++++
 .../org/apache/cordova/api/CordovaInterface.java   |    8 +++++++-
 .../src/org/apache/cordova/api/LegacyContext.java  |    8 ++++++++
 .../src/org/apache/cordova/api/PluginManager.java  |    3 +--
 4 files changed, 25 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/afcdccf7/framework/src/org/apache/cordova/DroidGap.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java
index b36320f..354a484 100755
--- a/framework/src/org/apache/cordova/DroidGap.java
+++ b/framework/src/org/apache/cordova/DroidGap.java
@@ -19,6 +19,8 @@
 package org.apache.cordova;
 
 import java.util.HashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import org.apache.cordova.api.IPlugin;
 import org.apache.cordova.api.LOG;
@@ -142,6 +144,8 @@ public class DroidGap extends Activity implements CordovaInterface {
     protected LinearLayout root;
     protected boolean cancelLoadUrl = false;
     protected ProgressDialog spinnerDialog = null;
+    private final ExecutorService threadPool = Executors.newCachedThreadPool();
+
 
     // The initial URL for our app
     // ie http://server/path/index.html#abc?query
@@ -1051,4 +1055,9 @@ public class DroidGap extends Activity implements CordovaInterface {
         }
         return null;
     }
+
+    @Override
+    public ExecutorService getThreadPool() {
+        return threadPool;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/afcdccf7/framework/src/org/apache/cordova/api/CordovaInterface.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/api/CordovaInterface.java b/framework/src/org/apache/cordova/api/CordovaInterface.java
index 93b31a0..5a052c4 100755
--- a/framework/src/org/apache/cordova/api/CordovaInterface.java
+++ b/framework/src/org/apache/cordova/api/CordovaInterface.java
@@ -22,6 +22,8 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 
+import java.util.concurrent.ExecutorService;
+
 /**
  * The Cordova activity abstract class that is extended by DroidGap.
  * It is used to isolate plugin development, and remove dependency on entire Cordova library.
@@ -67,5 +69,9 @@ public interface CordovaInterface {
      * @return              Object or null
      */
     public Object onMessage(String id, Object data);
-
+    
+    /**
+     * Returns a shared thread pool that can be used for background tasks.
+     */
+    public ExecutorService getThreadPool();
 }

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/afcdccf7/framework/src/org/apache/cordova/api/LegacyContext.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/api/LegacyContext.java b/framework/src/org/apache/cordova/api/LegacyContext.java
index 073ba94..0d22281 100644
--- a/framework/src/org/apache/cordova/api/LegacyContext.java
+++ b/framework/src/org/apache/cordova/api/LegacyContext.java
@@ -29,6 +29,8 @@ import android.content.res.AssetManager;
 import android.content.res.Resources;
 import android.util.Log;
 
+import java.util.concurrent.ExecutorService;
+
 @Deprecated
 public class LegacyContext implements CordovaInterface {
     private static final String LOG_TAG = "Deprecation Notice";
@@ -145,4 +147,10 @@ public class LegacyContext implements CordovaInterface {
         Log.i(LOG_TAG, "Replace ctx.unbindService() with cordova.getActivity().unbindService()");
         this.cordova.getActivity().unbindService(conn);
     }
+
+    @Override
+    public ExecutorService getThreadPool() {
+        Log.i(LOG_TAG, "Replace ctx.getThreadPool() with cordova.getThreadPool()");
+        return this.cordova.getThreadPool();
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/afcdccf7/framework/src/org/apache/cordova/api/PluginManager.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/api/PluginManager.java b/framework/src/org/apache/cordova/api/PluginManager.java
index aaf614d..589b103 100755
--- a/framework/src/org/apache/cordova/api/PluginManager.java
+++ b/framework/src/org/apache/cordova/api/PluginManager.java
@@ -47,7 +47,6 @@ public class PluginManager {
 
     private final CordovaInterface ctx;
     private final CordovaWebView app;
-    private final ExecutorService execThreadPool = Executors.newCachedThreadPool();
 
     // Flag to track first time through
     private boolean firstRun;
@@ -226,7 +225,7 @@ public class PluginManager {
                 runAsync = async && !plugin.isSynch(action);
                 if (runAsync) {
                     // Run this on a different thread so that this one can return back to JS
-                    execThreadPool.execute(new Runnable() {
+                    ctx.getThreadPool().execute(new Runnable() {
                         public void run() {
                             try {
                                 // Call execute on the plugin so that it can do it's thing