Svima nam je poznata lekcija "multitasking = sposobnost obavljanja nekoliko procesa u isto vrijeme". Koristimo ga u našim računalima, a da nismo posebno svjesni njegove prisutnosti. Prebacivanje između aplikacija ili prozora jedne aplikacije odvija se (za nas) u stvarnom vremenu i tu mogućnost operativnog sustava uzimamo zdravo za gotovo.
Zadatak drugačiji
Operativni sustav dodjeljuje procesor svim aplikacijama u malim vremenskim intervalima. Ta su razdoblja toliko mala da ih ne možemo primijetiti, pa se čini kao da sve aplikacije koriste procesor u isto vrijeme. Mogli bismo tako misliti multitasking u iOS-u 4 radi potpuno isto. Nije tako. Glavni razlog je naravno kapacitet baterije. Kad bi sve aplikacije doista radile u pozadini, vjerojatno bismo morali tražiti utičnicu za nekoliko sati.
Većina aplikacija kompatibilnih sa sustavom iOS 4 stavljaju se u "suspendirani način" ili stavljaju u stanje mirovanja nakon pritiska na gumb Home. Analogija bi mogla biti zatvaranje poklopca laptopa, koji odmah prelazi u stanje mirovanja. Nakon otvaranja poklopca laptop se budi i sve je u potpuno istom stanju kao prije zatvaranja poklopca. Nadalje, postoje aplikacije kod kojih se pritiskom na tipku Home zatvaraju. A pod tim mislimo na pravi prekid. Programeri imaju izbor koju će od ovih metoda koristiti.
Ali postoji još jedna kategorija aplikacija. Ovo su aplikacije koje stvarno rade u pozadini, iako na svom iUređaju radite nešto sasvim drugo. Skype je dobar primjer jer mu je potrebna stalna internetska veza. Drugi primjeri mogu biti aplikacije koje sviraju pozadinsku glazbu (Pandora) ili aplikacije koje zahtijevaju stalnu upotrebu GPS-a. Da, ove aplikacije troše bateriju čak i kada rade u pozadini.
Spavati ili oboriti?
Određene aplikacije kompatibilne sa sustavom iOS 4, koje bi trebale biti stavljene u stanje mirovanja (stavljene u "suspendirani način rada") nakon pritiska tipke Home, nastavljaju raditi u pozadini. Apple je programerima dao točno deset minuta da aplikacija izvrši svoj zadatak, kakav god on bio. Recimo da preuzimate datoteku u GoodReaderu. Odjednom vas netko želi nazvati i vi jednostavno morate prihvatiti taj važan poziv. Poziv nije trajao više od deset minuta, vratit ćete se na aplikaciju GoodReader. Datoteka je možda već preuzeta ili se još uvijek preuzima. Što ako poziv traje više od deset minuta? Aplikacija, u našem slučaju GoodReader, morat će zaustaviti svoju aktivnost i reći iOS-u da se može staviti u stanje mirovanja. Ako to ne učini, nemilosrdno će je ukinuti sam iOS.
Sada znate razliku između "mobilnog" i "stolnog" multitaskinga. Dok je za računalo važna fluidnost i brzina prebacivanja između aplikacija, za mobilne uređaje uvijek je najvažnija trajnost baterije. Ovoj činjenici trebalo je prilagoditi i multitasking. Stoga, nakon čitanja ovog članka, ako dvaput pritisnete tipku Home, više nećete vidjeti "traku aplikacija koje rade u pozadini", već u biti samo "popis nedavno korištenih aplikacija".
Autor: Daniel HruškaIzvor: onemoretap.com
hmm, zanimljivo :) Uvijek sam mislio da je to uvijek slično onome kako se može raditi na Unixu. Da je aplikaciji dodijeljeno nula CPU vremena i da proces samo sjedi u memoriji, svi resursi su dodijeljeni. pa sam morao dva puta pritisnuti home i odmah zaustaviti aplikaciju da je obrišem. Znači li to da čak i ako postoji ikona aplikacije na donjem skrivenom listu, aplikacija je još uvijek zatvorena prije mnogo vremena (nakon 10 minuta)?
U donjem popisu nalaze se jednostavno posljednje otvorene aplikacije, pri čemu se neke od njih još uvijek mogu pokrenuti, neke su suspendirane, a neke su potpuno ugašene. Ručno uklanjanje aplikacije s popisa ima "nuspojavu" da će se prekinuti ako se pokrene (ili je suspendirana).
O tih dodatnih 10 minuta aplikacija mora sama reći, a nije zajamčeno da će ih dobiti.
E, to me nije riješilo opsesije zatvaranja aplikacije s popisa (što ako slučajno pojede resurse, zar ne? :-D)
Koliko sam shvatio, 10 minuta je za aplikacije koje trebaju raditi u pozadini i ne spadaju u kategoriju "Skype, GPS i reprodukcija glazbe". Druge se aplikacije prebacuju u obustavljeni način rada i ostaju u memoriji dok memorija ne bude potrebna za druge stvari.
Suspendirani način rada ima prednost jer ako trebate ugasiti aplikaciju, nećete izgubiti podatke, sve će biti spremljeno u trenutku prelaska na suspendirani način.
ili, u slučaju npr. reprodukcije, ekvivalent naredbe bg / fg
A što je s playerom ili drugim aplikacijama koje rade u pozadini bilo koje vrijeme? Mislim, mogu li ja "birati" kao programer ili ovo mora nekako odobriti Apple?
Kako bi aplikacija stvarno radila u pozadini neograničeno vrijeme, mora napraviti (registrirati) jednu od sljedećih radnji:
– Koristite usluge lokacije (GPS)
– Pusti glazbu u pozadini
– Koristite VOIP (Glas preko IP-a)
Prema naslovu (pogled ispod haube) očekivao sam da će članak sadržavati nešto opširnije objašnjenje s tehničkim detaljima. Ovo više izgleda kao perex na članak. Ako je perex, kad je nastavak? Možete li dobiti povrat? :-)
a što biste željeli znati detaljnije?
Od članka s "ispod haube" u naslovu, očekivao bih detaljan tehnički opis (autor bi mogao analizirati npr. režijske troškove prilikom prebacivanja aplikacija ili kako se rukuje simultanim pristupom resursima sustava), usporedbu s drugim modelima (na primjer, s jailbreakiranim iPhoneom). Idealno je potkrijepiti to nekim mjerenjima. Jednostavno sam očekivao puno više od članka koji u naslovu ima "ispod haube" od ovog vrlo površnog opisa.
Postoji li neki icq klijent koji neprekidno radi u pozadini kao skype i ne prekida vezu?
aplikacija ima 10 sekundi da prijeđe u stanje mirovanja, a ne 10 minuta... i tijekom tog procesa neki dijelovi mogu, ali i ne moraju "visjeti" na pozadinskim servisima, od kojih su neki već navedeni gore - to je ono što Apple naziva "pametnim" "multizadaćnost.... onda ju je sustav oborio
Aplikacija može zahtijevati dodatno vrijeme ako se nešto preuzima, učitava ili obrađuje. To nema nikakve veze s GPS-om, VoIP-om ili reprodukcijom glazbe, koji rade u minimalističkom načinu rada neograničeno vrijeme.