title: Android - binding to service
body: <p>Hi: I can't seem to get an activity to bind to a service in the same package.</p>
  
  <p>The activity looks like this:</p>
  
  <pre><code>public class myApp extends TabActivity {
      static private String TAG = "myApp";
      private myService mService = null;
      private ServiceConnection mServiceConn = new ServiceConnection(){
          public void onServiceConnected(ComponentName name, IBinder service) {
              Log.v(TAG, "Service: " + name + " connected");
              mService = ((myService.myBinder)service).getService();
          }
  
          public void onServiceDisconnected(ComponentName name) {
              Log.v(TAG, "Service: " + name + " disconnected");
          }
      };
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          doBind();
          Log.i(TAG, "Started (UI Thread)");
  
          // set content
          setContentView(R.layout.main);
  
          Resources res = getResources(); // Resource object to get Drawables
          TabHost tabHost = getTabHost();  // The activity TabHost
  
          ... add some tabs here....
  
          tabHost.setCurrentTab(0);
      }
  
      private void doBind(){      
          Intent i = new Intent(this,myService.class);
          if( bindService(i, mServiceConn, 0 )){
              Log.i(TAG, "Service bound");
          } else {
              Log.e(TAG, "Service not bound");
          }
      }
  
  }
  </code></pre>
  
  <p>Then the service:</p>
  
  <pre><code>public class myService extends Service {
      private String TAG = "myService";
  
      private boolean mRunning = false;
  
      @Override
      public int onStartCommand(Intent intent, int flags, int startid) {
          Log.i(TAG,"Service start");
  
          mRunning = true;
  
          Log.d(TAG,"Finished onStartCommand");
          return START_STICKY;
      }
  
      /*
       * Called on service stop
       */
      @Override
      public void onDestroy(){
          Log.i(TAG,"onDestroy");
          mRunning = false;
          super.onDestroy();
      }
  
      @Override
      public IBinder onBind(Intent intent) {
          return mBinder;
      }
  
  
      boolean isRunning() {
          return mRunning;
      }
  
      /*
       * class for binding
       */
      private final IBinder mBinder = new myBinder();
      public class myBinder extends Binder {
          myService getService() {
              return myService.this;
          }
      }
  }
  </code></pre>
  
  <p>bindService returns true, but onServiceConnection is never called (mService is always null, so I can't do something like mService.isRunning() )</p>
  
  <p>The manifest entry for the service is just: </p>
  
  <pre><code>&lt;service android:name=".myService"&gt;&lt;/service&gt;
  </code></pre>
  
  <p>I was copying the code direct from the Android developers site, but I must have missed something. </p>