Sebastián Katzer 8 лет назад
Родитель
Сommit
ced7c19ac0
1 измененных файлов с 12 добавлено и 8 удалено
  1. 12 8
      src/android/LocalNotification.java

+ 12 - 8
src/android/LocalNotification.java

@@ -59,7 +59,7 @@ import static de.appplant.cordova.plugin.notification.Notification.Type.TRIGGERE
 public class LocalNotification extends CordovaPlugin {
 
     // Reference to the web view for static access
-    private static CordovaWebView webView = null;
+    private static WeakReference<CordovaWebView> webView = null;
 
     // Indicates if the device is ready (to receive events)
     private static Boolean deviceready = false;
@@ -77,7 +77,7 @@ public class LocalNotification extends CordovaPlugin {
      */
     @Override
     public void initialize (CordovaInterface cordova, CordovaWebView webView) {
-        LocalNotification.webView = super.webView;
+        LocalNotification.webView = new WeakReference<CordovaWebView>(webView);
     }
 
     /**
@@ -547,14 +547,16 @@ public class LocalNotification extends CordovaPlugin {
      */
     private static synchronized void sendJavascript(final String js) {
 
-        if (!deviceready) {
+        if (!deviceready || webView == null) {
             eventQueue.add(js);
             return;
         }
 
-        ((Activity)(webView.getContext())).runOnUiThread(new Runnable() {
+        final CordovaWebView view = webView.get();
+
+        ((Activity)(view.getContext())).runOnUiThread(new Runnable() {
             public void run() {
-                webView.loadUrl("javascript:" + js);
+                view.loadUrl("javascript:" + js);
             }
         });
     }
@@ -564,17 +566,19 @@ public class LocalNotification extends CordovaPlugin {
      */
     private static boolean isInForeground() {
 
-        if (!deviceready)
+        if (!deviceready || webView == null)
             return false;
 
-        KeyguardManager km = (KeyguardManager) webView.getContext()
+        CordovaWebView view = webView.get();
+
+        KeyguardManager km = (KeyguardManager) view.getContext()
                 .getSystemService(Context.KEYGUARD_SERVICE);
 
         //noinspection SimplifiableIfStatement
         if (km.isKeyguardLocked())
             return false;
 
-        return webView.getView().getWindowVisibility() == View.VISIBLE;
+        return view.getView().getWindowVisibility() == View.VISIBLE;
     }
 
     /**