浏览代码

Removed hard coded 4s pause. Callbacks are called after the webview was initialized.

Sebastián Katzer 12 年之前
父节点
当前提交
421b2df545
共有 2 个文件被更改,包括 20 次插入12 次删除
  1. 19 3
      src/android/LocalNotification.java
  2. 1 9
      src/android/ReceiverActivity.java

+ 19 - 3
src/android/LocalNotification.java

@@ -21,6 +21,7 @@
 
 package de.appplant.cordova.plugin.localnotification;
 
+import java.util.ArrayList;
 import java.util.Map;
 import java.util.Set;
 
@@ -48,10 +49,12 @@ import android.content.SharedPreferences.Editor;
  */
 public class LocalNotification extends CordovaPlugin {
 
-    protected final static String PLUGIN_NAME = "LocalNotification";
+    protected final static String PLUGIN_NAME      = "LocalNotification";
 
-    protected static CordovaWebView webView   = null;
-    protected static Context context          = null;
+    protected static CordovaWebView webView        = null;
+    protected static Context context               = null;
+
+    protected static ArrayList<String> callbackQueue = new ArrayList<String>();
 
     @Override
     public void initialize (CordovaInterface cordova, CordovaWebView webView) {
@@ -59,6 +62,8 @@ public class LocalNotification extends CordovaPlugin {
 
         LocalNotification.webView = super.webView;
         LocalNotification.context = super.cordova.getActivity().getApplicationContext();
+
+        execPendingCallbacks();
     }
 
     @Override
@@ -240,4 +245,15 @@ public class LocalNotification extends CordovaPlugin {
     protected static NotificationManager getNotificationManager () {
         return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
     }
+
+    /**
+     * Calls all pending callbacks after the webview was created.
+     */
+    private void execPendingCallbacks () {
+        for (String js : callbackQueue) {
+            webView.sendJavascript(js);
+        }
+
+        callbackQueue.clear();
+    }
 }

+ 1 - 9
src/android/ReceiverActivity.java

@@ -21,9 +21,6 @@
 
 package de.appplant.cordova.plugin.localnotification;
 
-import java.util.Timer;
-import java.util.TimerTask;
-
 import org.json.JSONException;
 import org.json.JSONObject;
 
@@ -80,12 +77,7 @@ public class ReceiverActivity extends Activity {
         // after reboot, LocalNotification.webView is always null
         // call background callback later
         if (LocalNotification.webView == null) {
-            new Timer().schedule(new TimerTask() {
-                @Override
-                public void run() {
-                    LocalNotification.webView.sendJavascript(js);
-                }
-            }, 4000);
+            LocalNotification.callbackQueue.add(js);
         } else {
             LocalNotification.webView.sendJavascript(js);
         }