Firstly, if you really do not need to make calls to this service through processes (that is, from other .apks or you use android: a process for some reason splits your own .apk into several processes), then I really recommend just abandoning use of help. It is harder without a win. The "Service documentation" in the "Service documentation" shows how to do this: http://developer.android.com/reference/android/app/Service.html
Secondly, binding at the same time as the start is a strong sign of some basic design flaw. Starting a service and binding to a service are semantically different from each other, so this will be done in different places based on these different semantics. That is, if both of them are even made at all ... in fact, this is an unusual situation when you use both start and bind with the same service.
In the implementation of the class to perform music playback, it will use start when it is actively performing playback (therefore, its process will not be killed by the system when the user will no longer actively interact with the user interface of the application). Starting the service when the user enters the user interface can cause pain, because now the state of starting / stopping the service is not clearly defined - it can be started either because it is playing, or because the user accidentally hit the user interface of the application, and now, when is the right time to stop it? It will be troublesome.
Now that you need to unlink, you just need to make sure that you always map unbindService () to the previous bindService (). From your code snippets, it looks like you are doing this, but there are strange things in it, for example, mBound is never installed. In fact, if you constantly bind to onStart () and not bind to onStop (), you never need to have mBound to decide whether to unbind, because onStop () is always called after onStart ().
So, with the code you provide here, this does not seem to be a problem. However, if you get exceptions, it is obvious that this may be elsewhere in your application. To reduce the problem, you can use this flag when you call bindService () to get more information in the log when a crash occurs: http://developer.android.com/reference/android/content/Context.html#BIND_DEBUG_UNBIND