2012-10-29 17 views
26

Oczywiście, to jest banalne pytanie. Co się stanie, jeśli zacznę Service, stosując następujący kod:Uruchamianie usługi Androida już działa?

startService(new Intent(this,myService.class)); 

a potem przypadkowo przypomnieć powyższy kod, a Service jest jeszcze działa?

Obawiam się, że drugie połączenie z startservice może utworzyć nowy numer Service, aby możliwe było wykonanie dwóch różnych procesów w tym samym czasie.

+2

Istnieje tylko jedno wystąpienie usługi, więc nie musisz martwić się o wiele połączeń. – jsmith

+0

OK, dziękuję. Nie byłem tego pewien. – GVillani82

Odpowiedz

53

Obawiam się, że drugie wezwanie do uruchomienia usługi może utworzyć nową usługę, aby mieć jednocześnie dwa różne procesy.

Nie, na wielu powodów:

  • Nie, to nie będzie tworzyć nową usługę. Jeśli usługa jest już uruchomiona, zostanie ponownie wywołana z numerem onStartCommand(), aby dostarczyć nową Intent, ale druga kopia nie zostanie utworzona.

  • Nie, nie "nie wykona jednocześnie dwóch różnych procesów", ponieważ usługa jest domyślnie uruchamiana w tym samym procesie, co reszta aplikacji.

+1

Używam usługi intent do pobrania wideo z adresu URL. Wyświetlam filmy na liście, pobierając je ze strony internetowej. Gdy użytkownik kliknie element listy, pobieranie rozpocznie się w usłudze intencji. Jeśli użytkownik kliknie inny element, następne pobieranie rozpocznie się automatycznie po zakończeniu pierwszego. To naprawdę mnie myli. –

+1

@AnkitGarg: Dokładnie tak ma wyglądać "IntentService". – CommonsWare

+1

Czy to oznacza, że ​​onStartCommand przechowuje (stacks) nowe zgłoszenie serwisowe i wykonuje je po zakończeniu pierwszej usługi? –

Powiązane problemy