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