Jaka jest różnica między usługą a odbiornikiem?


14

Ciągle słyszę o usługach i odbiornikach . Jaka jest różnica między nimi i jak wpływają one na działanie mojego telefonu z Androidem z mojego punktu widzenia?


Wiesz, zamiast tworzyć porty w warstwie TCP, zawsze tworzymy odbiorniki, aby oszczędzać baterię i dużo przetwarzać. Kiedy jakieś zdarzenie dzieje się w Androidzie ... transmisja jest wysyłana przez telefon do wszystkich aplikacji .. A jeśli napisać odbiornik dla tego zdarzenia ,,, zostanie ono automatycznie wywołane. Technicznie rzecz biorąc, wydarzenie miało miejsce pod nazwą Android
Rahul Raina

Odpowiedzi:


27

Aplikacje na Androida mają trzy rodzaje komponentów. Zasadniczo użytkownicy nie muszą o nich wiedzieć: to sposób, w jaki autorzy aplikacji mogą programować określone zachowania w swoich aplikacjach. Ale jeśli uważnie obserwujesz zachowanie swoich aplikacji, na przykład za pomocą menedżera zadań, lub jeśli automatyzujesz rzeczy za pomocą aplikacji takiej jak Tasker, pomocne jest zrozumienie, jak pasują one do siebie w systemie.

Aktywność jest najbardziej znanym rodzajem komponent: to okno można zobaczyć: albo na pełnym ekranie lub w oknie dialogowym wielkości. Aktywność działa tylko wtedy, gdy jest wyświetlana na ekranie. Po opuszczeniu aktywności system Android utrzyma tę aplikację w pamięci, aby była gotowa do ponownego uruchomienia, ale aktywność nie będzie działać, co oznacza, że ​​nie będzie korzystać z baterii ani sieci. Aplikacja rozpoczyna działanie z zamiarem . Zamiarem może być jawne określenie, które działanie należy uruchomić, lub może określić akcję do wykonania (na przykład otwarcie określonego pliku). Jeśli więcej niż jedno działanie może „obsłużyć” zamiar, zobaczysz okno dialogowe z prośbą o wybranie jednego.

Usługa jest inny komponent aplikacji. Gdy inny składnik (być może działanie lub inna usługa) uruchomi usługę, działa w tle, dopóki się nie zatrzyma. Oznacza to, że usługa może utrzymywać telefon w stanie uśpienia (korzystanie z blokady budzenia ), rozładowywanie baterii lub używanie dużej ilości danych sieciowych, bez pokazywania niczego na ekranie.

Aplikacje mogą korzystać z usług w celu wykonywania długotrwałych procesów w tle, takich jak pobieranie plików z serwera, sprawdzanie poczty e-mail lub sprawdzanie lokalizacji. Chociaż usługi nie pojawiają się ani nie łączą się z tobą bezpośrednio, nadal pojawiają się na liście „Uruchamianie aplikacji”. Z aplikacji Ustawienia wybierz Aplikacje lub Menedżer aplikacji , a następnie Uruchom . Możesz zatrzymać usługę w ten sposób, ale zwykle nie jest to konieczne. Ponieważ usługi nie są bezpośrednio widoczne, system Android uważa je za mniej ważne niż działania, dlatego zostaną zabici jako pierwsi, gdy telefon będzie potrzebował więcej pamięci.

Odbiorniki rozgłoszeniowe to trzeci rodzaj komponentu. Podobnie jak usługi, istnieją tylko w tle i nie komunikują się z tobą bezpośrednio. Ale w przeciwieństwie do usług, nie mogą pozostać uruchomione ani wykonywać długich zadań: istnieją po to, aby reagować na zdarzenia. I w przeciwieństwie do działań i usług, można uruchomić więcej niż jeden odbiornik za jednym razem.

Składnik transmituje zamiar, być może do jednej aplikacji, ale częściej bez określania konkretnej aplikacji. W takim przypadku zamiar zwykle oznacza zdarzenie, które się wydarzyło, na przykład rozładowanie akumulatora. System wyszukuje wszystkie odbiorniki radiowe, które zgłosiły zainteresowanie (za pomocą filtru celowego ), i uruchamia kolejno każdy z nich. Każdy odbiornik rozgłoszeniowy może natychmiast zareagować, na przykład tworząc powiadomienie lub może uruchomić usługę lub działanie w celu podjęcia dalszych działań. Gdy tylko odbiornik transmisji obsłuży zdarzenie, zostanie ono zatrzymane i nie uruchomi się ponownie, dopóki nie zostanie nadane inne podobne zdarzenie.

Przykładem wszystkich trzech składników współpracujących ze sobą jest pobranie aplikacji z Google Play. Po pierwsze, aktywność w Google Play zapewnia interfejs wizualny umożliwiający wybranie treści do pobrania. Lista aplikacji może stanowić jedno działanie; kliknięcie przycisku „zainstaluj” uruchamia inną czynność, aby wyświetlić okno dialogowe potwierdzenia lub płatności. Po potwierdzeniu aktywność okna dialogowego uruchamia usługę. Usługa będzie nadal pobierać zawartość, nawet gdy działanie zakończy się i nie będzie już działać.

Ale być może telefon traci połączenie z Internetem podczas pobierania nowej aplikacji. Jeśli tak się stanie, usługa pobierania Google Play zarejestruje odbiornik, z filtrem celowym, który mówi, że jest zainteresowany zmianami łączności sieciowej, a następnie usługa się zatrzyma. Gdy telefon łączy się z Internetem, system emituje zdarzenie. Android uruchomi nadawcę zarejestrowanego w usłudze Google Play wraz z każdym innym odbiornikiem nadawczym czekającym na to wydarzenie. W takim przypadku odbiornik ponownie uruchomi usługę pobierania. Usługa będzie tworzyć powiadomienia w trakcie pobierania, a gdy zakończy się, wyśle ​​własną transmisję, aby poinformować inne aplikacje, że nowy pakiet został zainstalowany, a następnie zatrzyma się. To z kolei uruchomi odbiorniki z innych aplikacji,

W podsumowaniu:-

  • Aktywność reprezentuje okno na ekranie; usługa wykonuje prawdopodobnie długotrwałe zadanie w tle; odbiornik rozgłoszeniowy działa przez krótki czas, aby obsłużyć zdarzenie.
  • Wszystkie trzy są uruchamiane przy użyciu zamiarów, ale przy użyciu innego mechanizmu. Aplikacja uruchamiająca musi wyraźnie określić, który typ komponentu ma zostać uruchomiony (w każdym przypadku wywołując inną metodę).
  • Gdy aplikacja rozpoczyna działanie przy użyciu zamiaru, rozpoczyna tylko jedno działanie (możliwe, że wyświetla okno dialogowe „Zakończ działanie przy użyciu ...”, aby umożliwić wybór), to samo dotyczy usług, ale nadawanie zamiaru może rozpocząć kilka transmisji odbiorniki, prawdopodobnie z różnych aplikacji.
  • Jako użytkownik bezpośrednio wchodzisz w działania; nie wchodzisz w interakcje z usługami, ale mogą one spowolnić telefon i zużywać zasoby; nie współpracujesz z odbiornikami, a ponieważ są krótkotrwałe, nie musisz się martwić o zarządzanie nimi.

Bardzo przydatna odpowiedź. Chcę tylko coś potwierdzić: co stanie się z aplikacjami wyłączonymi przez użytkowników? Czy Android kiedykolwiek uruchamia swój odbiornik transmisji w celach, dla których jest zarejestrowany? Czy te wyłączone aplikacje mogą uruchamiać swoje usługi w tle? Dlaczego przycisk Force-Stop nie jest wyszarzony dla wyłączonych aplikacji nawet po ponownym uruchomieniu? Jest dla mnie jasne, że ich działalności nie można uruchomić.
Firelord

@Firelord Jeśli masz nowe pytanie, opublikuj je jako nowe pytanie. Komentarze nie pozwalają na dogłębne odpowiedzi i nie umożliwiają znalezienia pytania dla innych użytkowników.
Dan Hulme,

świetny post, ale w rzeczywistości są cztery elementy. Brak dostawców treści.
Alexandre Martin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.