Why does my service get instantiated multiple times?
<p>IIUC, there should only be one instance of a given Android service, it is a singleton.</p>

<p>However, my service gets instantiated multiple times, although I
do nothing for it.</p>

<p>When the service crashes (for example when I uninstall the app through adb), it
gets scheduled for restart ("Scheduling restart of crashed service.. "). I
understand this is an effect of the service being sticky.</p>

<p>After that, when my app starts, it calls startService() and bindService(), and
the service gets appropriately started and bound. But the service is then
reinstantiated and onCreate() is called repeatedly, as many times it was
scheduled for restart.</p>

<p>Each instance then wait for clients to bind and register, but onBind() is only
called in the "main" service instance. The additional instances wait a bit for
client to bind, and since that doesn't happen, they call stopSelf().</p>

<p>But stopSelf() has absolutely no effect in these "dead" instances, onDestroy()
is never called.</p>

<p>The "main" service instance does work as expected, and when it decides to call
stopSelf(), onDestroy() is indeed called.</p>

<p>Worse, all these dead instances accumulate, they never gets destroyed.
Therefore, their only possible end is a crash (which happen every time I
launch/install through adb), and thus scheduled restart.</p>

<p>So that in the end I get many of these dead instances, which are restarted
progressively once by minute approximately.</p>

<p>Does anyone know what's going on?</p>
