title: Unable to destroy Activity (service is not registered)
body: <p>*<strong><em>EDIT SOLVED BY DOING THIS:</em>*</strong>
  I have solved it by changing my <code>onDestroy()</code> of my Activity and the <code>ServiceConnection::onServiceDisconnected()</code>.</p>
  
  <p>I have added a boolean to check if I'm bounded to the Service called <code>boundToService</code>.
  The ServiceConnection:</p>
  
  <pre><code>private ServiceConnection mConnection = new ServiceConnection() {
      public void onServiceConnected(ComponentName className, IBinder service) {
          myService = ((EventService.MyBinder) service).getService();
      }
  
      public void onServiceDisconnected(ComponentName name) {
          // TODO Auto-generated method stub
          Log.i(getPackageName(), "ServiceConnection::onServiceDisconnected() called");
          boundToService = false;
      }
  };
  </code></pre>
  
  <p>And the <code>onDestroy()</code>:</p>
  
  <pre><code>@Override
  protected void onDestroy() {
      // TODO Auto-generated method stub
      super.onDestroy();
      Log.e(getPackageName(), "Destroying Activity");
      if (boundToService &amp;&amp; mConnection != null) {
          doUnbindService();
      }
  }
  </code></pre>
  
  <p>This is how the binding and unbinding is done in the activity:</p>
  
  <pre><code>public void doBindService() {
      bindService(new Intent(this, EventService.class), mConnection,
              Context.BIND_AUTO_CREATE);
      boundToService = true;
  }
  
  public void doUnbindService() {
      unbindService(mConnection);
      boundToService = false;
  }
  </code></pre>
  
  <p>As Guillaume said, calling <code>super.onDestroy()</code> first is a must.</p>
  
  <p>*<strong><em>END OF SOLVE</em>*</strong></p>
  
  <p>I have a <code>Foreground Service</code> that polls GPS data, and the <code>MapActivity</code> requests that data every 3 seconds. When the <code>onDestroy()</code> of the <code>MapActivity</code> is called, I get this LogCat error:</p>
  
  <pre><code>06-11 21:26:35.591: D/CLIPBOARD(14801): Hide Clipboard dialog at Starting input: finished by someone else... !
  06-11 21:26:44.451: D/dalvikvm(14801): Debugger has detached; object registry had 1371 entries
  06-11 21:26:44.451: D/AndroidRuntime(14801): Shutting down VM
  06-11 21:26:44.456: W/dalvikvm(14801): threadid=1: thread exiting with uncaught exception (group=0x40c4b1f8)
  06-11 21:26:44.476: E/AndroidRuntime(14801): FATAL EXCEPTION: main
  06-11 21:26:44.476: E/AndroidRuntime(14801): java.lang.RuntimeException: Unable to destroy activity {com.project4.mtl/com.project4.mtl.EventActivity}: java.lang.IllegalArgumentException: Service not registered: com.project4.mtl.EventActivity$1@416179d8
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3124)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3142)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.ActivityThread.access$1200(ActivityThread.java:127)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1192)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.os.Handler.dispatchMessage(Handler.java:99)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.os.Looper.loop(Looper.java:137)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.ActivityThread.main(ActivityThread.java:4507)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at java.lang.reflect.Method.invokeNative(Native Method)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at java.lang.reflect.Method.invoke(Method.java:511)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at dalvik.system.NativeStart.main(Native Method)
  06-11 21:26:44.476: E/AndroidRuntime(14801): Caused by: java.lang.IllegalArgumentException: Service not registered: com.project4.mtl.EventActivity$1@416179d8
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:888)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.ContextImpl.unbindService(ContextImpl.java:1211)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.content.ContextWrapper.unbindService(ContextWrapper.java:375)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at com.project4.mtl.EventActivity.onDestroy(EventActivity.java:175)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.Activity.performDestroy(Activity.java:4629)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1082)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3111)
  06-11 21:26:44.476: E/AndroidRuntime(14801):    ... 11 more`
  </code></pre>
  
  <p>And of course the code around line 175 where the exception is caused in my program:</p>
  
  <pre><code>@Override
  protected void onDestroy() {
      // TODO Auto-generated method stub
      unbindService(mConnection);
      super.onDestroy();
  }
  </code></pre>
  
  <p>If you want more code snippets, just tell me.</p>
  
  <p>*<strong><em>edit</em>*</strong></p>
  
  <p>This is the code for the ServiceConnection:</p>
  
  <pre><code>public void doBindService() {
      //ComponentName service = startService(new Intent(this,
          //  EventService.class));
      bindService(new Intent(this, EventService.class), mConnection,
              Context.BIND_AUTO_CREATE);
  }
  </code></pre>
  
  <p><code>mConnection</code> is type of ServiceConnection:</p>
  
  <pre><code>private ServiceConnection mConnection = new ServiceConnection() {
      public void onServiceConnected(ComponentName className, IBinder service) {
          myService = ((EventService.MyBinder) service).getService();
      }
  
      public void onServiceDisconnected(ComponentName name) {
          // TODO Auto-generated method stub
  
      }
  };
  </code></pre>