Zwykle podczas tworzenia usługi Android implementuję tę onCreate
metodę, ale w moim ostatnim projekcie to nie działa. Próbowałem wdrożyć onStartCommand
i wydaje się, że działa.
Pytanie brzmi: kiedy muszę wdrożyć usługę, która metoda jest wymagana? Jakie metody muszę wdrożyć? onCreate
, onStartCommand
czy oba? Jaka jest rola każdego z nich?
android
android-service
oncreate
GVillani82
źródło
źródło
onCreate
jest zawsze wywoływany niezależnieOdpowiedzi:
onCreate()
jest wywoływana, gdyService
obiekt jest tworzony (to znaczy: gdy usługa jest tworzony ). W tej metodzie powinieneś robić rzeczy, które musisz zrobić tylko raz (np .: zainicjować niektóre zmienne itp.).onCreate()
będzie wywoływana tylko raz na instancję obiektu .Musisz zaimplementować tylko
onCreate()
wtedy, gdy faktycznie chcesz / musisz zainicjować coś tylko raz .onStartCommand()
jest wywoływana za każdym razem, gdy klient uruchamia usługę przy użyciustartService(Intent intent)
. Oznacza to, żeonStartCommand()
można dzwonić wielokrotnie. W tej metodzie należy wykonać czynności, które są potrzebne za każdym razem, gdy klient zażąda czegoś od Twojej usługi. Zależy to w dużej mierze od tego, co robi Twoja usługa i jak komunikuje się z klientami (i odwrotnie).Jeśli nie zaimplementujesz
onStartCommand()
, nie będziesz w stanie uzyskać żadnych informacji odIntent
klienta,onStartCommand()
a Twoja usługa może nie być w stanie wykonać żadnej użytecznej pracy.źródło
startService()
, jeśli usługa nie jest uruchomiona, Android utworzy wystąpienie klasy usługi (jest to obiekt usługi), a następnie wywołaonCreate()
ten obiekt. Następnie wywołaonStartCommand()
ten obiekt. Jeśli po jakimś czasie ponownie zadzwoniszstartService()
, jeśli usługa nadal działa, system Android nie utworzy nowego obiektu usługi. Zamiast tego po prostu wywołaonStartCommand()
istniejący obiekt usługi. Czy to jasne?i zawsze, gdy
service
wywoływana jest przy użyciu startService .onStartCommand
będzie wezwany. i możesz przekazać dowolną akcję do wykonania. jak w przypadku odtwarzacza muzyki, możesz grać, pauzować, przestać używać akcjiI robisz wszystko
operation in service
, wysyłając akcję i odbierając jąonStartCommand
onCreate
pracować jak konstruktor.Edytuj w skrócie
onCreate()
dzwoni tylko za pierwszym razem, gdy rozpoczynasz aService
PodczasonStartCommand()
połączeń za każdym razem, gdy dzwoniszstartService
ponownie. Pozwala ustawić akcję, taką jak odtwarzanie, zatrzymywanie, wstrzymywanie muzyki.źródło