Jeśli chcecie mnie wesprzeć to zapraszam do kupna mojego poradnika "Jakim jesteś Makiem?".

Multitasking na iPhone w iOS 4

· Wojtek Pietrusiewicz · 9 komentarzy

Apple od najnowszej wersji wprowadziło multitasking, czyli wielozadaniowość po naszemu. Tradycyjnie rozumiemy to jako możliwość wykonywania wielu operacji jednocześnie, zazwyczaj na wielu programach. Przykładem może być przeglądanie książki adresowej podczas pisania maila oraz jednoczesne zerkanie w kalendarz czy mamy wolną chwilę w wybranym dniu.

Specyfika mobilnych systemów operacyjnych oraz rozmiarów samych telefonów wykluczają takie podejście do tematu. Ekran jest zwyczajnie zbyt mały, aby wyświetlać kilka okien równocześnie. Byłoby to niewygodne i bardzo nieergonomiczne. Wydajność przy wykonywanych czynnościach spadłaby, a irytacja poszybowałaby na nieznane dotąd wyżyny.

Będąc ograniczonym do jednej aplikacji na ekranie w danej chwili, wielozadaniowość musi zostać przedefiniowana na mobilne platformy. Podejście Apple zmierza do płynnej wymiany informacji pomiędzy różnymi aplikacjami, ale jeszcze do celu nie dotarto. Widać to na przykładzie chociażby poczty z załącznikami — otwierając PDF pojawia nam się opcja “przeniesienia” go do programów np. iBooks czy Air Sharing, oczywiście poza możliwością przeczytania go w samym kliencie pocztowym. Taka funkcjonalność jest obecnie ograniczona do wybranych aplikacji, z czasem jednak będzie się to rozszerzać na inne programy i typy plików.

To co obecnie jest najczęściej przedstawiane jako multitasking to zwyczjne “fast app-switching”, czyli szybkie przełączanie się pomiędzy aplikacjami. Wystarczy dwa razy szybko kliknąć przycisk Home i otwiera się lista niedawno używanych programów. Wybór jednego z nich natychmiast przenosi nas do niego, bez konieczności odwiedzania głównego ekranu. Założenie jest takie, że aplikacja z której wychodzimy jest zamrażana. Jej stan jest zapisywany i po powrocie do niej zastaniemy ją dokładnie w tym stanie, w której ją opuściliśmy. Pozwoli to na kontynuację pracy czy grania bez straty czasu. Warto dodać, że zamrożona aplikacja nie zużywa baterii — ona nic nie robi, nie wykorzystuje w żaden sposób procesora, więc nie należy się tym przejmować. Implementacja funkcji zapamiętywania stanu ciąży na developerze — Apple tylko udostępnił narzędzia do tego celu. Na dzień dzisiejszy jest zaledwie garsta programów, które potrafią to wykorzystać, ale ich liczba wzrasta z każdym dniem.

Oprócz zamrażania stanu, Apple udostępnił jeszcze odpowiednie API, które umożliwiają programowi funkcjonowanie w tle. Na przykładzie Twitter for iPhone, który został uaktualniony dla iOS 4, działa to w następujący sposób: wyjście z app podczas gdy trwa wysyłanie nowego tweeta (lub uploadowanie zdjęcia wraz z nim) powoduje, że ta czynność będzie kontynuowana w tle. Po jej zakończeniu Twitter przejdzie w stan zamrożenia. Inaczej z kolei zachowa się nawigacja: jeśli podczas pracy na przykład TomToma zadzwoni telefon to w tle będą nam nadal przekazywane komunikaty głosowe, a sama aplikacja będzie miała dostęp do danych z GPSa. Skype z kolei będzie zachowywał się jak zwykła rozmowa telefoniczna — wątek odpowiedzialny za rozmowę będzie aktywny podczas gdy będziemy wykonywać inną czynność. Ostatnim przykładem niech będzie aplikacja do uploadowania zdjęć np. na Flickr: po wybraniu 20 plików uaktywniamy upload i wychodzimy z programu. Czynność będzie kontynuowana w tle i zostaniemy poinformowani o jej zakończeniu stosowną informacją.

Niektórzy zapewne zorientowali się, że de facto multitasking istnieje w iPhone od dłuższego czasu. Przecież mogliśmy przeglądać internet podczas rozmowy czy też wyjść z SMSów zanim wysłała się wiadomość. Nie była po prostu dostępna dla aplikacji z App Store.

Nie wiem jedynie co dzieje się z nawigacją typu TomTom po wyjściu z niej. Możemy ją oczywiście “zabić” przytrzymując palec na ikonkach w dolnym pasku odpowiedzialnym za fast app-switching, a następnie kliknąć w czerwony minus w rogu. To pytanie pozostawiam komuś kto ma możliwość tego sprawdzenia.

Na koniec chciałbym jeszcze przypomnieć, że aplikacje trwające w zamrożonym stanie nie obciążają procesora ani baterii. Nie trzeba ich ręcznie zamykać.

Aha — większość natywnych programów iPhone (tych od Apple) może od dłuższego czasu wykonywać operacje w tle.

W razie pytań zapraszam do komentarzy.

Chcesz zwrócić mi na coś uwagę lub skomentować? Zapraszam na @morid1n lub na forum.

  • DT

    Aplikacje rzeczywiście w tle nie obciążają procesora ani nie wpływają na żywotność baterii (o ile utrzymywanie danych w ram nie wpływa na żywotność baterii…) natomiast siedzą w pamięci operacyjnej. Przykład z 3GS: po dopaleniu 17 programów (w tym natywne) wolna pamięć to około 3 MB. Ale generalnie i tak jest bardzo fajnie :).

  • Z tego co wiem to najstarsze są wyłączane jeśli brakuje RAM więc nie powinno to robić problemów w teorii.

  • Łukasz

    Co do nawigacji, to w Navigonie jest tak, że jeśli jest uruchomione prowadzenie (wyznaczona trasa), to przejście na inną aplikację nie powoduje wyłączenia pozycjonowania GPS (ikonka u góry nadal jest widoczna) oraz poleceń głosowych. Natomiast jeśli trasa nie jest wyznaczona – wyjście z programu zamraża jego działanie i telefon nie korzysta z odbiornika GPS.

  • Jan

    Bardzo przydatny artykuł dziękuję

  • Pingback: Automatyczny check-in w Foursquare dla iPhone | blog.moridin.pl()

  • Pingback: Steve Jobs jako “Kłamca Kłamca” | blog.moridin.pl()

  • zdzisław

    w moim iphone 4 nie na zdjęciach pozycjonowania t.z. zawsze zdjęci i nagranie są w jednej pocycji i niewiem co trzeba zrobić

  • Betterthanyou

    a czy w trakcie przechowywania tych aplikacji iphone cały czas pobiera dane?

  • Nie.