Wszyscy znamy lekcję „wielozadaniowość = umiejętność wykonywania kilku procesów jednocześnie”. Używamy go w naszych komputerach, nie zdając sobie szczególnie sprawy z jego obecności. Przełączanie pomiędzy aplikacjami lub oknami jednej aplikacji odbywa się (dla nas) w czasie rzeczywistym i taką możliwość systemu operacyjnego traktujemy jako oczywistość.
Zadanie inne
System operacyjny przydziela procesor wszystkim aplikacjom w małych odstępach czasu. Te okresy czasu są tak małe, że ich nie zauważamy, więc wydaje się, że wszystkie aplikacje korzystają z procesora w tym samym czasie. Możemy tak myśleć wielozadaniowość w iOS 4 działa dokładnie tak samo. To nie jest takie. Głównym powodem jest oczywiście pojemność baterii. Gdyby rzeczywiście wszystkie aplikacje pozostawiono działające w tle, prawdopodobnie za kilka godzin musielibyśmy szukać gniazda.
Większość aplikacji kompatybilnych z iOS 4 przechodzi w „tryb zawieszenia” lub zostaje uśpiona po naciśnięciu przycisku Home. Analogią może być zamknięcie pokrywy laptopa, który od razu przechodzi w tryb uśpienia. Po otwarciu pokrywy laptop się wybudza i wszystko jest w dokładnie takim samym stanie jak przed zamknięciem pokrywy. Ponadto istnieją aplikacje, w których naciśnięcie przycisku Początek powoduje ich zakończenie. I przez to mamy na myśli prawdziwe zakończenie. Programiści mają wybór, której z tych metod użyć.
Ale jest jeszcze inna kategoria zastosowań. Są to aplikacje, które naprawdę działają w tle, nawet jeśli robisz coś zupełnie innego na swoim iDevice. Skype jest dobrym przykładem, ponieważ wymaga stałego połączenia z Internetem. Innymi przykładami mogą być aplikacje odtwarzające muzykę w tle (Pandora) lub aplikacje wymagające ciągłego korzystania z GPS. Tak, te aplikacje zużywają baterię, nawet jeśli działają w tle.
Spać czy zestrzelić?
Niektóre aplikacje kompatybilne z iOS 4, które po naciśnięciu przycisku Home powinny zostać uśpione (przełączone w „tryb zawieszenia”), nadal działają w tle. Apple dał programistom dokładnie dziesięć minut na wykonanie przez aplikację zadania, czymkolwiek ono było. Załóżmy, że pobierasz plik w GoodReader. Nagle ktoś chce do Ciebie zadzwonić, a Ty musisz po prostu przyjąć to ważne połączenie. Rozmowa nie trwała dłużej niż dziesięć minut, powrócisz do aplikacji GoodReader. Plik mógł już zostać pobrany lub jest nadal pobierany. A co jeśli rozmowa zajmie więcej niż dziesięć minut? Aplikacja, w naszym przypadku GoodReader, będzie musiała przerwać działanie i poinformować iOS, że można ją uśpić. Jeśli tego nie zrobi, zostanie bezlitośnie zniszczona przez sam iOS.
Teraz znasz różnicę między wielozadaniowością „mobilną” i „komputerową”. O ile dla komputera ważna jest płynność i szybkość przełączania pomiędzy aplikacjami, o tyle w przypadku urządzeń mobilnych najważniejsza jest zawsze żywotność baterii. Do tego faktu trzeba było dostosować także wielozadaniowość. Dlatego po przeczytaniu tego artykułu, jeśli naciśniesz dwukrotnie przycisk Początek, nie zobaczysz już „paska aplikacji działających w tle”, a w zasadzie jedynie „listę ostatnio używanych aplikacji”.
Autor: Daniel HruškaŹródło: onemoretap.com
hmm, ciekawe :) Zawsze myślałem, że zawsze jest to podobne do tego, jak można to zrobić na Unixie. Jeśli aplikacji przydzielono zerowy czas procesora, a proces po prostu znajduje się w pamięci, oznacza to, że wszystkie zasoby zostały przydzielone. więc musiałem dwukrotnie nacisnąć przycisk Home i natychmiast zatrzymać aplikację, aby ją usunąć. Czy to oznacza, że nawet jeśli w dolnym ukrytym arkuszu znajduje się ikona aplikacji, aplikacja jest nadal zamknięta dawno temu (po 10 minutach)?
Na dolnej liście znajdują się po prostu ostatnio otwarte aplikacje, przy czym niektóre z nich mogą nadal działać, inne są zawieszone, a inne całkowicie zakończone. Ręczne usunięcie aplikacji z listy ma „efekt uboczny” polegający na tym, że jeśli będzie uruchomiona (lub zostanie zawieszona), zostanie zakończona.
Aplikacja musi sama sobie powiedzieć o tych 10 dodatkowych minutach i nie ma gwarancji, że je uzyska.
Cóż, to nie pozbyło się mojej obsesji na punkcie zamykania aplikacji z listy (a co jeśli przypadkowo zje zasoby, prawda? :-D)
Rozumiem, że 10 minut jest przeznaczone na aplikacje, które muszą działać w tle i nie należą do kategorii „skype, GPS i odtwarzanie muzyki”. Inne aplikacje przełączają się w tryb wstrzymania i pozostają w pamięci do czasu, aż pamięć będzie potrzebna do innych celów.
Tryb zawieszenia ma tę zaletę, że jeśli będziesz musiał zamknąć aplikację, nie stracisz jej danych, wszystko zostanie zapisane w momencie przejścia w tryb zawieszenia.
lub w przypadku np. odtwarzania odpowiednik polecenia bg/fg
A co z odtwarzaczem lub innymi aplikacjami działającymi w tle przez dłuższy czas? To znaczy, czy jako programista mogę „wybierać”, czy też musi to zostać w jakiś sposób zatwierdzone przez Apple?
Aby aplikacja rzeczywiście działała w tle przez nieograniczony czas, musi wykonać (zarejestrować) jedną z poniższych akcji:
– Korzystaj z usług lokalizacyjnych (GPS)
– Włącz muzykę w tle
– Korzystaj z VOIP (głos przez IP)
Zgodnie z tytułem (zajrzyj pod maskę) spodziewałem się, że artykuł będzie zawierał nieco szersze wyjaśnienie ze szczegółami technicznymi. To bardziej wygląda na perex do artykułu. Jeśli to Perex, kiedy będzie kontynuacja? Czy możesz otrzymać zwrot pieniędzy? :-)
a co chciałbyś wiedzieć bardziej szczegółowo?
Od artykułu z tytułem „pod maską” spodziewałbym się szczegółowego opisu technicznego (autor mógłby przeanalizować np. narzut przy przełączaniu aplikacji, czy obsługi jednoczesnego dostępu do zasobów systemowych), porównania z innymi modelami (na przykład w przypadku iPhone'a po jailbreaku). Najlepiej poprzeć to kilkoma pomiarami. Po prostu spodziewałem się znacznie więcej po artykule, który w tytule ma „pod maską”, niż po tym bardzo powierzchownym opisie.
Czy jest jakiś klient icq, który działa ciągle w tle, jak Skype i nie zrywa połączenia?
aplikacja ma 10 sekund na przejście w tryb wstrzymania, a nie 10 minut... i podczas tego procesu niektóre części mogą, ale nie muszą, „zawiesić się” w usługach zaplecza, z których część została już wymieniona powyżej — to właśnie Apple nazywa „inteligentnymi” " wielozadaniowość.... potem system ją zestrzelił
Aplikacja może wymagać dodatkowego czasu, jeśli coś jest pobierane, przesyłane lub przetwarzane. Nie ma to nic wspólnego z GPS, VoIP czy odtwarzaniem muzyki, które działają w trybie minimalistycznym przez nieograniczony czas.