Jak Android zarządza procesami
System Windows zezwala na działanie aplikacji komputerowych bez względu na to, czy są one widoczne, czy nie, a system Apple z systemem iOS zezwala aplikacjom tylko na wykonywanie ograniczonych zadań w tle. Android znajduje się gdzieś pośrodku - pierwszeństwo mają aplikacje działające na pierwszym planie, ale aplikacje mają więcej swobody w tle niż na iOS.
Rzucimy okiem na to, jak Android zarządza aplikacjami i procesami działającymi na telefonie lub tablecie, demistyfikuje to, co dzieje się w tle.
Hierarchia cyklu procesu
Proces na Androida może być w jednym z pięciu różnych stanów w danym momencie, od najważniejszego do najmniej ważnego:
- 1. Proces pierwszoplanowy: Aplikacja, z której korzystasz, jest uważana za proces pierwszego planu. Inne procesy można również uznać za procesy pierwszoplanowe - na przykład w przypadku interakcji z procesem, który jest obecnie na pierwszym planie. W danym momencie istnieje tylko kilka procesów pierwszoplanowych.
- 2. Widoczny proces: Widoczny proces nie jest na pierwszym planie, ale nadal ma wpływ na to, co widzisz na ekranie. Na przykład, proces pierwszego planu może być dialogiem, który pozwala zobaczyć aplikację za nią - aplikacja widoczna w tle byłaby widocznym procesem.
- 3. Proces serwisowy: Proces usługi nie jest związany z żadną aplikacją widoczną na ekranie. Jednak robi coś w tle, na przykład odtwarzanie muzyki lub pobieranie danych w tle. Na przykład, jeśli zaczniesz odtwarzać muzykę i przełączysz się na inną aplikację, odtwarzanie muzyki w tle jest obsługiwane przez proces usługi.
- 4. Proces w tle: Procesy w tle nie są obecnie widoczne dla użytkownika. Nie mają one wpływu na korzystanie z telefonu. W danym momencie wiele procesów działających w tle jest obecnie uruchomionych. Możesz myśleć o tych procesach działających w tle jako o "wstrzymanych" aplikacjach. Są przechowywane w pamięci, dzięki czemu możesz szybko wznowić korzystanie z nich, gdy do nich wrócisz, ale nie zużywają cennego czasu procesora ani nie korzystają z innych zasobów pamięci.
- 5. Pusty proces: Pusty proces nie zawiera już żadnych danych aplikacji. Może być przechowywany w celu buforowania, aby przyspieszyć uruchamianie aplikacji później, lub system może zabić go w razie potrzeby.
Na przykład załóżmy, że włączasz telefon i uruchamiasz aplikację muzyczną. Podczas korzystania z niego aplikacja muzyczna będzie stanowić proces pierwszego planu. Gdy zaczniesz odtwarzać muzykę i wyjdziesz z aplikacji muzycznej, muzyka będzie nadal odtwarzana jako usługa.
Spójrzmy na Angry Birds jako inny przykład. Angry Birds byłby pierwszoplanowym procesem podczas gry. Gdy opuścisz Angry Birds i wejdziesz do aplikacji Gmail, aby wyświetlić swój e-mail, Angry Birds staje się procesem działającym w tle (ponieważ nie musi robić nic w tle), a Gmail staje się pierwszym planem. Kiedy powrócisz do Angry Birds, stanie się on twoim pierwszym planem, a gra zostanie szybko wznowiona. Angry Birds nie korzystał z zasobów w tle - poza pewną pamięcią RAM - ale wznawiał się szybko, ponieważ pozostał zapisany w pamięci podręcznej i gotowy do wznowienia.
Android automatycznie zarządza procesami
Android radzi sobie z automatycznym zarządzaniem tymi procesami, dlatego nie potrzebujesz zabójcy zadań na Androida.
Kiedy Android potrzebuje więcej zasobów systemowych, zacznie najpierw zabijać najmniej ważne procesy. Android zacznie zabijać procesy puste i działające w tle, aby zwolnić pamięć, jeśli masz mało energii. Jeśli potrzebujesz więcej pamięci - na przykład, jeśli grasz w szczególnie wymagającą grę na urządzeniu bez dużej ilości pamięci RAM, Android zacznie zabijać procesy serwisowe, więc Twoja muzyka strumieniowa i pobieranie plików może się zatrzymać.
W większości przypadków Android robi to wszystko bez konieczności martwienia się o to. Android inteligentnie wykorzystuje pamięć RAM urządzenia do buforowania aplikacji i innych danych, ponieważ nie ma sensu pozostawiać pustego RAMu.
Oczywiście Android zapewnia aplikacjom tyle elastyczności, że mają miejsce, by źle się zachowywać. Na przykład źle zakodowana aplikacja może uruchomić proces serwisowy, który cały czas działa w tle, zużywając cały czas procesora i znacznie zmniejszając żywotność baterii.
Jedna interesująca rzecz, którą zauważysz w aplikacjach antywirusowych, takich jak Avast! w przypadku Androida aplikacja antywirusowa używa ikony powiadomienia. jeśli spróbujesz wyłączyć ikonę powiadomienia, Avast! polecam przeciwko niemu. Mając widoczną ikonę powiadomienia, Avast! staje się aplikacją o wyższym priorytecie, uniemożliwiając Androidowi uznanie jej za aplikację działającą w tle i zabicie jej.
Aplikacje na Androida mogą się uruchamiać w odpowiedzi na zdarzenia
Aplikacje na Androida mogą również uruchamiać się w odpowiedzi na zdarzenia. Programista może na przykład zaprogramować swoją aplikację, aby automatycznie uruchamiała się przy starcie i uruchamiała usługę w tle. Aplikacje można uruchamiać w odpowiedzi na wiele innych zdarzeń, na przykład podczas robienia zdjęć, zmiany połączenia danych i tak dalej. Dzięki temu aplikacje mogą wykonywać akcje w odpowiedzi na zdarzenia bez ciągłego działania w tle.
Zarządzanie procesami
Nie powinieneś zarządzać procesami ręcznie, ale możesz zrobić to na kilka sposobów. Możesz skorzystać z menu wielozadaniowości w systemie Android 4.0 i nowszych wersjach, aby wykonać podstawowe zarządzanie procesami. Aby uzyskać do niego dostęp, dotknij dedykowanego przycisku wielozadaniowości na urządzeniach Nexus. Na innych urządzeniach z Androidem może być konieczne dwukrotne dotknięcie lub długie naciśnięcie przycisku strony głównej.
Aplikacje wyświetlane w menu najprawdopodobniej znajdują się w stanie "proces w tle". Możesz je zabić, przesuwając aplikację w lewo lub w prawo, co spowoduje jej usunięcie z pamięci urządzenia. To nie powinno być konieczne, ale może pomóc, gdy chcesz szybko zabić aplikację - być może źle się zachowuje.
Możesz także przejść do ekranu Ustawienia, dotknąć Aplikacje, dotknąć aplikacji i użyć przycisku Wymuś zatrzymanie, aby zabić niewłaściwie działającą aplikację.
System Android jest oparty na systemie Linux, a każda aplikacja na Androida jest przypisana do innego identyfikatora użytkownika systemu Linux lub konta użytkownika. To izoluje aplikacje od siebie nawzajem. Jeśli zrootujesz swoje urządzenie, aplikacje mogą uciec z ich obszarów izolowanych i działać z uprawnieniami roota.
Image Credit: JD Hancock na Flickr