W jakich przypadkach powinienem rozpocząć korzystanie z Usługi i w jakim przypadku usługą wiążącą? Na przykład - klient Android dla usługi muzycznej? Czy istnieją jakiekolwiek różnice w priorytecie Systemu, czy są to wszelkie wspólne zasady; coś jeszcze?Usługa Android: wiązanie lub uruchamianie?
Odpowiedz
Zastosowanie startService()
za usługi, które będą działać niezależnie od ich rozpoczęcia. Odtwarzacze muzyki są dobrym przykładem. Są one uruchamiane, dopóki nie wywołają stopSelf()
lub ktoś zadzwoni pod numer stopService()
.
można komunikować się z usługą uruchomionego wysyłając intencjami iz powrotem, ale w przeważającej części, wystarczy uruchomić usługę i pozwolić mu działać na własną rękę.
Zastosowanie bind()
gdy usługa i klient będzie komunikować iz powrotem na trwałe połączenia. Dobrym przykładem jest usługa nawigacji, która będzie przekazywać aktualizacje lokalizacji z powrotem do klienta. Segregatory są o wiele trudniejsze do napisania niż intencje, ale tak naprawdę są one najlepszym sposobem na zastosowanie tego przypadku.
chodzi o priorytet: Kiedy wszystkie działania procesu tracą widoczność, proces staje się procesem serwis jeśli gospodarze usługę który został uruchomiony z onStart()
, w przeciwnym razie staje się procesem tło. Procesy obsługi mają wyższy priorytet niż procesy działające w tle. Więcej informacji pod adresem android developer site.
Jeśli proces serwisowy bez widocznej aktywności wymaga wyższego priorytetu (np. Odtwarzacza muzyki, który tak naprawdę nie powinien być przerywany), usługa może zadzwonić pod numer startForeground()
.
- 1. Uruchamianie niepoprawnych wtyczek, brakujące wiązanie javax.xml.bind
- 2. Uruchamianie Redis w Windows jako usługa
- 3. Uruchamianie polecenia jako proces w tle/usługa
- 4. Usługa MediaPlayer Android
- 5. Scyzoryk Android - wiązanie w fragmencie
- 6. Android i usługa RESTful
- 7. Wiązanie podsieci Wix lub podział
- 8. Usługa muzyki w tle Android
- 9. Android Wear: uruchamianie usługi na urządzeniu Handheld
- 10. Uruchamianie aplikacji Android z linku lub wiadomości e-mail
- 11. Android Uruchamianie lub wywoływanie innej aplikacji za pośrednictwem Intent
- 12. usługi android - błąd: usługa niezarejestrowana
- 13. Usługa Android i wątku UI
- 14. Zaplanowane zadanie lub usługa Windows
- 15. Usługa zewnętrzna Android z biblioteki (AAR, nie wspólna usługa)
- 16. Uruchamianie aplikacji Android bez głównej aktywności i uruchamianie usługi po uruchomieniu aplikacji
- 17. Zabezpieczenie hasłem uruchamianie aplikacji Android
- 18. Android classcastexception na uruchamianie działalności
- 19. Uruchamianie AnimationDrawable w systemie Android
- 20. Emulator Android przyspiesza ponowne uruchamianie
- 21. Usługa Windows uruchamianie i zatrzymywanie bez uprawnień administratora
- 22. Wiązanie elementu strony internetowej z aplikacją Android
- 23. Obserwowalna rekursja (lub wiązanie) w strzałkach
- 24. Wiązanie i odszyfrowywanie usługi Android do/z Fragmentu (w ViewPager)
- 25. Android: Sprawdź, czy usługa jest uruchomiona. bindService
- 26. Uruchamianie Google Maps z przeglądarki Android
- 27. Android usługa uruchomiona przez nie testów JUnit
- 28. Usługa Android onStartCommand nigdy nie była nazywana
- 29. Usługa Android nie działa jako singleton
- 30. Usługa z priorytetową kolejką w systemie Android
Tutorial programista Google wspomina, że wiązanie '„... będzie działać dobrze dla aplikacji muzycznej, która musi wiązać działalność na własny serwis, który jest odtwarzanie muzyki w tle.”' A jednak można powiedzieć, że to co StartService powinny być używany do. Komentuję, ponieważ w tej chwili zmagam się z tym samym pytaniem: związać się lub zacząć. –
Samouczki dla programistów Google są okropne i nieudane. –
Naprawdę, tak czy inaczej działa. StartService() jest zwykle najlepszym wyborem dla usługi, która będzie działać na własną rękę, a bind() jest zwykle najlepszym wyborem, gdy aplikacja i usługa będzie w stałym kontakcie z powrotem-i-dalej. Ale możesz użyć funkcji Intent do komunikacji w przód iw tył z usługą stylu startService() lub możesz użyć funkcji bind() do uruchomienia usługi i po prostu pozwól jej działać. Rób, jak chcesz. Szczerze mówiąc, segregatory to dużo pracy do napisania, więc ich unikam. Możesz także użyć ResultReceiver, który jest wygodnym opakowaniem wokół Binder. –