Я прочитал другие темы о проверке, запущена ли служба , но это не работает для меня.
Моя ситуация в том, что я создаю фоновую службу веб-сервера, но не привязываюпотому что я хочу, чтобы он продолжал работать после окончания действия.Служба создает уведомление, чтобы пользователи могли видеть, что оно работает.Пользователь может остановить службу с помощью кнопки в разделе «Деятельность».
Все это работает нормально, за исключением запуска операции, я не могу определить, запущена ли служба уже.Я использую следующее:
if (isMyServiceRunning() == false)
{
Intent ws = new Intent(this, WebServerService.class);
startService(ws);
}
И это
private boolean isMyServiceRunning() {
String sClassName;
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
sClassName = service.service.getClassName();
DebugMsg("Service: " + sClassName);
if (sClassName.contains("com.<mydomain>.webservice"))
{
return true;
}
}
return false;
}
Я получаю список работающих служб, как для системных, так и для сторонних служб.Но мой сервис не отображается в списке, хотя я знаю, что он работает.Если я захожу в Настройки телефона -> Приложения -> Запущенные службы, я вижу, что он там работает.
Я где-то читал в документации, что вызов startService для службы, которая уже запущена, должен игнорироваться.Но это не тот случай, как я вижу в отладчике, когда вызываются и OnCreate, и OnStart.
Важно, чтобы я не создавал новую службу каждый раз, потому что фоновая служба может находиться в середине обработки файла.Деятельности не нужно устанавливать связь со службой - запускайте ее, только если она не запущена, и убивайте ее, если пользователь нажимает кнопку.
Любая идея о том, почему моя служба не отображается вgetRunningServices list?