Jaki byłby najlepszy sposób sprawdzenia, czy usługa Android jest uruchomiona? Zdaję sobie sprawę z interfejsu API ActivityManager
, ale wygląda na to, że użycie interfejsu API nie jest zalecane w przypadku scenariuszy podobnych do moich (source). Jestem również świadomy możliwości użycia zmiennych globalnych/trwałych w celu utrzymania stanu usługi.Android: Sprawdź, czy usługa jest uruchomiona. bindService
Próbowałem użyć bindService
z flag ustawionych na 0
, ale mam takie same problemy jak osoby na źródłowego łącza (jedynym wyjątkiem był, starałem się bindService
z usługi lokalnej).
następujące wywołanie
getApplicationContext().bindService(new Intent(getApplicationContext(),
MyService.class), mServiceConnection, 0);
zawsze zwraca true, ale nie zostanie podłączony. Czy to oczekiwane zachowanie? Wydaje mi się, że bindService
powinien zwrócić wartość false, jeśli usługa nie jest jeszcze uruchomiona (nie jest, sprawdziłem to) lub jeśli flaga BIND_AUTO_CREATE
nie jest ustawiona (ponownie, nie jest).
Powiedzmy, że chciałbym lubię wydrukować wiadomość "Usługa jest uruchomiona" lub "Usługa nie działa". Właśnie dlatego muszę uzyskać informacje, czy usługa jest uruchomiona, czy nie. Nie mogę tego zrobić, dzwoniąc do usługi startService. – Igor
Ale dlaczego musisz wydrukować tę wiadomość? Są tylko 2 rzeczy, które możesz zrobić, jeśli usługa nie działa. Albo zacznij, albo nie. – Falmarri
Ponieważ chcę poinformować użytkownika, czy usługa jest uruchomiona, czy nie. Użytkownik powinien ręcznie uruchomić i zatrzymać usługę (naciskając klawisz.).Gdy użytkownik zamknie działanie (przycisk BACK), usługa powinna pozostać uruchomiona. A aktywność powinna wiedzieć, kiedy użytkownik uruchomi ją następnym razem, że usługa jest już uruchomiona. – Igor