Semantically use BIND_AUTO_CREATE if you attach to a service whose lifetime is only valid as long as it has clients associated with it. This is because at the moment when all customers are not connected with him, he will decline.
Do not use BIND_AUTO_CREATE - or perhaps I should rephrase: it makes no sense to use BIND_AUTO_CREATE if you really just temporarily BIND_AUTO_CREATE attached to the service to request or control it, and it is reasonable that this service will live after you finish. In these cases, the binding is intended to establish a connection, and the service life cycle should be controlled using startService() and stopService() (or stopSelf() in some cases).
A commonly mentioned example of the latter case is clearly described by Google in related services docs:
"... For example, a music player might find it useful to allow its service to work indefinitely, as well as provide a link. Thus, an action can start a service to play any music, and the music continues to play even if the user leaves the application. Then, when the user returns to the application, the action can be bound to the service to restore playback control. "
In general, I would say that using the flag really distinguishes two very different types of use cases, rather than finely tuned versions of the same.
d4vidi
source share