"Если вы запустите службу Android с помощью startService (..), эта служба будет работать до тех пор, пока вы явно не вызовете stopService (..). Существует две причины, по которым система может запускать службу. Если кто-то вызывает Context.startService (), затем система извлекает службу (создает ее и при необходимости вызывает ее метод onCreate ()), а затем вызывает ее метод onStartCommand (Intent, int, int) с аргументами, предоставленными клиентом.продолжайте работу, пока не будут вызваны Context.stopService () или stopSelf (). Обратите внимание, что множественные вызовы Context.startService () не вкладываются (хотя они приводят к нескольким соответствующим вызовам onStartCommand ()), поэтому независимо от того, сколько разслужба будет остановлена после вызова Context.stopService () или stopSelf (), однако службы могут использовать свой метод stopSelf (int), чтобы гарантировать, что служба не будет остановлена до тех пор, пока не будут обработаны запущенные намерения.
Клиенты также могут использовать Context.bindService () для полученияn постоянное подключение к услуге.Это также создает службу, если она еще не запущена (вызывая при этом onCreate ()), но не вызывает onStartCommand ().Клиент получит объект IBinder, который служба возвращает из своего метода onBind (Intent), что позволяет клиенту затем выполнить обратные вызовы службе.Служба будет работать до тех пор, пока соединение установлено (независимо от того, сохраняет ли клиент ссылку на IBinder службы).Обычно возвращаемый IBinder предназначен для сложного интерфейса, написанного на aidl.
Служба может быть запущена и иметь связанные с ней соединения.В таком случае система будет поддерживать работу службы до тех пор, пока она либо запущена, либо имеется одно или несколько подключений к ней с флагом Context.BIND_AUTO_CREATE.Если ни одна из этих ситуаций не выполняется, вызывается метод onDestroy () службы, и служба эффективно завершается.Вся очистка (остановка потоков, отмена регистрации получателей) должна быть завершена после возврата из onDestroy (). "
Вы можете проверить, работает служба или нет:
public boolean isServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if ("com.example.app.ServiceClassName".equals(service.service.getClassName())) {
return true;
}
}
return false;
}