Przechodziłem przez Bound Service w witrynie dla programistów Androida. Pomyślałem, że rozumiem tę usługę wystarczająco, ale znalazłem inny sposób połączenia usługi poprzez użycie klasy Messenger, szczególnie w przypadku usług lokalnych. Tam byłem zdezorientowany. Może źle pomyślałem.Dlaczego używać usługi, jeśli działa w tym samym wątku w Androidzie
Oto moje zrozumienie usługi Android. Aby utworzyć usługę przy
- Chcesz zrobić oddzielne pracy w tle.
- Chcesz zrobić oddzielny proces.
- Chcesz, aby działał w innym cyklu życia.
Zamieszanie jest pierwszą pozycją na liście, definicją tła. Czy tło nie jest wątkiem lub procesem? Nigdy nie myślałem, że może działać na głównym wątku.
Oto uwaga dotycząca serwisu na stronach poświęconych programistom.
Uwaga: Usługa działa w głównym wątku jej hosting procesowej-usługi nie tworzy swój własny wątek i nie działa w oddzielnym procesie (o ile nie określono inaczej). Oznacza to, że jeśli twoja usługa będzie wykonywać intensywne prace lub operacje blokujące procesor (takie jak odtwarzanie MP3 lub praca w sieci), powinieneś utworzyć nowy wątek w usłudze, aby to zrobić. Używając oddzielnego wątku, zmniejszysz ryzyko błędów ANR (Application Not Responding), a główny wątek aplikacji pozostanie dedykowany interakcji użytkownika z twoimi działaniami.
Pytania 1. Dlaczego ktoś wybrał opcję korzystania z usługi, jeśli funkcja serwisowa w każdym razie działa w głównym wątku? 2. Czy musimy napisać usługę tylko po to, aby zablokować ANR, nawet jeśli czasochłonna praca jest wykonywana w głównym wątku? Załóżmy, że usługa jest tylko dla mojej aplikacji. 3. Czy istnieją praktyczne przypadki lub powody, dla których usługa jest prywatna i działa w tym samym wątku?
Z góry dziękuję.
głównym celem usługi jest to, że mają inny cykl życia niż cyklu aktywności - tak # 3 stosuje się tutaj. – pskink