Жизненный цикл сервиса различается для started и bound сервисов.

Методы жизненного цикла started сервиса:

onCreate() – вызывается, когда сервис создается системой. Для создания started сервиса используется метод startService().

onStartCommand() – вызывается, когда сервис переходит в активное состояние. Код, который выполняет сервис, должен быть написан в этом методе.

onDestroy() – вызывается, когда сервис уничтожается системой. Это происходит после вызова stopSelf() или stopService(). Также система может убить процесс с фоновым сервисом когда не хватает ресурсов или, начиная с Android 8.0, для ограничения фоновых работы.

Методы жизненного цикла bound сервиса:

onCreate() – вызывается когда первый клиент присоединяется к сервису вызовом bindService() с флагом BIND_AUTO_CREATE.

onBind() – вызывается системой, когда первый клиент присоединяется к сервису вызовом метода bindService(). После вызова этого метода bound сервис переходит в активное состояние.

onUnbind() – вызывается системой, когда все клиенты отсоединились от сервиса вызовом метода unbindService().

onDestroy() – вызывается после onUnbind(), перед тем как система уничтожит сервис.

Сервис может быть одновременно started и bound. В этом случае вызываются все методы жизненного цикла обоих типов сервисов.
onDestroy() у такого сервиса вызывается когда все клиенты отсоединены и сервис остановлен вызовом метода stopSelf() или stopService().
Если же все клиенты отсоединяются, но сервис не остановлен, то вызывается метод onUnbind() и сервис продолжает работать.
onUnbind() возвращает boolean. Если вернуть true, то при присоединении первого клиента после onUnbind() вызывается метод onRebind(), иначе вызывается onBind().

Документация жизненного цикла сервиса.
Документация жизненного цикла bound сервиса.