title: How to create plugin in phonegap to run the application in background?
body: <p>I have created plugin for background service (to run the application in background) in phonegap.</p>
  
  <p>here is my java code for plugin:</p>
  
  <pre><code>public class BackgroundService extends Plugin {
      @Override
      public PluginResult execute(String action, JSONArray args, String callbackId)
      {
          PluginResult.Status status = PluginResult.Status.OK;
          String result = "";
  
          try {
              if (action.equals("onCreate")) {
                  this.onCreate();
              }
              else if (action.equals("onBind")) {
                  Intent intent = null;
                  this.onBind(intent);
              }
              else if (action.equals("onDestroy")) {
                  this.onDestroy();
              }
              else if (action.equals("onStart")) {
                  Intent intent = null;
                  this.onStart(intent,args.getInt(1));
              }
              else if (action.equals("onUnbind")) {
                  Intent intent = null;
                  this.onUnbind(intent);
              }
              return new PluginResult(status, result);
          } catch(JSONException e) {
              return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
          }
      }
      public void onCreate() {
  
          // TODO Auto-generated method stub
  
  
  
          }
      public IBinder onBind(Intent intent) {
  
          // TODO Auto-generated method stub
  
  
  
          return null;
  
          }
      public void onDestroy() {
  
          // TODO Auto-generated method stub
  
          super.onDestroy();
  
  
  
          }
      public void onStart(Intent intent, int startId) {
  
          // TODO Auto-generated method stub
  
          //super.onStart(intent, startId);
  
  
  
          }
      public boolean onUnbind(Intent intent) {
  
          // TODO Auto-generated method stub
  
  
  
          }
      public void onPause()
      {
          super.webView.loadUrl("javascript:navigator.BackgroundService.onBackground();");
      }
  
      public void onResume()
      {
          super.webView.loadUrl("javascript:navigator.BackgroundService.onForeground();");
      }
  
  }
  </code></pre>
  
  <p>and my js file is:</p>
  
  <pre><code>function BackgroundService() {
  };
  
  BackgroundService.prototype.create = function() {
      PhoneGap.exec(null, null, "BackgroundService", "onCreate", []);
  };
  
  BackgroundService.prototype.destroy = function() {
      PhoneGap.exec(null, null, "BackgroundService", "onDestroy", []);
  };
  
  BackgroundService.prototype.start = function(intent,startId) {
      PhoneGap.exec(null, null, "BackgroundService", "onStart", [intent,startId]);
  };
  
  BackgroundService.prototype.bind = function(intent) {
      PhoneGap.exec(null, null, "BackgroundService", "onBind", [intent]);
  };
  
  BackgroundService.prototype.unbind = function(intent) {
      PhoneGap.exec(null, null, "BackgroundService", "onUnbind", [intent]);
  };
  PhoneGap.addConstructor(function() {
      PhoneGap.addPlugin("BackgroundService", new BackgroundService());
  });
  </code></pre>
  
  <p>and in my index.html. I have added the below code in my button click</p>
  
  <p>navigator.BackgroundService.onCreate();
   navigator.BackgroundService.onStart(intent,1);</p>
  
  <p>My error is:</p>
  
  <pre><code>ERROR/AndroidRuntime(14981): FATAL EXCEPTION: main
  
  ERROR/AndroidRuntime(14981): java.lang.RuntimeException: Unable to instantiate service com.app.newly.BackgroundService: java.lang.ClassCastException: com.app.newly.BackgroundService
  
  ERROR/AndroidRuntime(14981):at android.app.ActivityThread.handleCreateService(ActivityThread.java:2943)
  
  ERROR/AndroidRuntime(14981):at android.app.ActivityThread.access$3300(ActivityThread.java:125)
  
  ERROR/AndroidRuntime(14981):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2087)
  ERROR/AndroidRuntime(14981):     at android.os.Handler.dispatchMessage(Handler.java:99)
  
  ERROR/AndroidRuntime(14981):     at android.os.Looper.loop(Looper.java:123)
  
  ERROR/AndroidRuntime(14981):     at android.app.ActivityThread.main(ActivityThread.java:4627)
  ERROR/AndroidRuntime(14981):     at java.lang.reflect.Method.invokeNative(Native Method)
  
  ERROR/AndroidRuntime(14981):     at java.lang.reflect.Method.invoke(Method.java:521)
  
  ERROR/AndroidRuntime(14981):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
  
  ERROR/AndroidRuntime(14981):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
  ERROR/AndroidRuntime(14981):     at dalvik.system.NativeStart.main(Native Method)
  ERROR/AndroidRuntime(14981): Caused by: java.lang.ClassCastException: com.app.newly.BackgroundService
  ERROR/AndroidRuntime(14981):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2940)
  ERROR/AndroidRuntime(14981):     ... 10 more
  </code></pre>
  
  <p>If I removed <strong>startService(new Intent(this,MyService.class));</strong> from java file I got the below error:</p>
  
  <pre><code>ERROR/Web Console(4785): ReferenceError: Can't find variable: SqlitePlugin at file:///android_asset/www/BackgroundService.js:31
  ERROR/Web Console(4785): TypeError: Result of expression 'window.plugins.SqlitePlugin' [undefined] is not an object. at file:///android_asset/www/index.html:26
  </code></pre>
  
  <p>otherwise I can't able to run the application I am getting the error in the java file.Am getting the red cross mark(like '<strong>X</strong>') in the left corner of this line 'startService(new Intent(this,MyService.class));' please tell me where I am wrong,please guide me,thanks in advance.</p>
  
  <p><img src="https://i.stack.imgur.com/hY79n.png" alt="please check the image where i am getting the error">
   I am getting the error in start service.when i move the cursor to the startService i am getting create method 'startService(intent)'</p>
  
  <p>And I Am having the doubt in this plugin can i able to run the javascript in background or not.If it is possible how to get the alert in background.please tell me where I am wrong,please guide me,thanks in advance.</p>