Svi znamo lekciju "multitasking = sposobnost obavljanja nekoliko procesa u isto vrijeme". Koristimo ga u našim računarima, a da nismo posebno svjesni njegovog prisustva. Prebacivanje između aplikacija ili prozora jedne aplikacije odvija se (za nas) u realnom vremenu i ovu sposobnost operativnog sistema uzimamo zdravo za gotovo.
Zadatak drugačiji
Operativni sistem dodeljuje procesor svim aplikacijama u malim vremenskim intervalima. Ovi vremenski periodi su toliko mali 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. Da su sve aplikacije zaista ostavljene da rade u pozadini, vjerovatno bismo morali tražiti socket za nekoliko sati.
Većina aplikacija kompatibilnih sa iOS 4 se stavlja u "suspendovani način rada" ili se stavlja u stanje mirovanja nakon pritiska na tipku 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 gdje se pritiskom na tipku Home završavaju. I 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 radite nešto potpuno drugačije na svom iDeviceu. Skype je dobar primjer jer mu je potrebna stalna internetska veza. Drugi primjeri bi bile aplikacije koje puštaju muziku u pozadini (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 iOS 4, koje treba staviti u stanje mirovanja (prebaciti u "suspendovani režim") nakon pritiska na dugme Home, nastavljaju da rade u pozadini. Apple je programerima dao tačno deset minuta da aplikacija završi svoj zadatak, kakav god da je bio. Recimo da preuzimate datoteku u GoodReader-u. Odjednom vas neko želi nazvati, a vi jednostavno morate prihvatiti taj važan poziv. Poziv nije trajao više od deset minuta, vratit ćete se u aplikaciju GoodReader. Datoteka je možda već preuzeta ili se još uvijek preuzima. Šta 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, sam iOS će je nemilosrdno ukinuti.
Sada znate razliku između "mobilnog" i "desktop" multitaskinga. Dok su fluidnost i brzina prebacivanja između aplikacija važni za računar, trajanje baterije je uvijek najvažnija stvar za mobilne uređaje. Multitasking je također morao biti prilagođen ovoj činjenici. Stoga, nakon čitanja ovog članka, ako dvaput pritisnete tipku Home, više nećete vidjeti "traku aplikacija koje rade u pozadini", već u suštini samo "listu nedavno korištenih aplikacija".
Autor: Daniel HruškaIzvor: onemoretap.com
hmm, zanimljivo :) Uvijek sam mislio da je uvijek bilo slično kako se to može uraditi na Unixu. Da je aplikaciji dodijeljeno nula CPU vremena i da proces samo sjedi u memoriji, svi resursi su dodijeljeni. pa sam morao dvaput pritisnuti home i odmah zaustaviti aplikaciju da je izbrišem. Znači li to da čak i ako postoji ikona aplikacije u donjem skrivenom listu, aplikacija je još uvijek zatvorena davno (nakon 10 minuta)?
U donjoj listi su jednostavno najnovije otvorene aplikacije, pri čemu neke od njih još uvijek mogu raditi, neke su suspendovane, a neke potpuno ugašene. Ručno uklanjanje aplikacije sa liste ima "nuspojavu" da će, ako se desi da radi (ili je suspendovana), biti prekinuta.
Aplikacija mora sama reći za tih 10 dodatnih minuta i nije zajamčeno da će ih dobiti.
Pa, to se nije riješilo moje opsesije zatvaranjem aplikacije sa liste (šta ako slučajno pojede resurse, zar ne? :-D)
Koliko sam shvatio, 10 minuta je za aplikacije koje treba da rade u pozadini i koje ne spadaju u kategoriju "skype, GPS i reprodukcija muzike". Ostale aplikacije prelaze u suspendirani način rada i ostaju u memoriji dok memorija ne bude potrebna za druge stvari.
Suspendirani način rada ima prednost da ako trebate ubiti aplikaciju, nećete izgubiti njene podatke, sve će biti pohranjeno u trenutku prelaska na suspendiranu.
ili, u slučaju npr. reprodukcije, ekvivalent naredbi bg / fg
A šta je sa plejerom ili drugim aplikacijama koje rade u pozadini bilo koji vremenski period? Mislim, da li ja mogu "izabrati" kao programer, ili ovo mora nekako biti odobreno od strane Applea?
Da bi aplikacija zaista radila u pozadini neograničeno vrijeme, mora izvršiti (registrirati) jednu od sljedećih radnji:
– Koristite lokacijske usluge (GPS)
– Pustite muziku u pozadini
– Koristite VOIP (Voice over IP)
Sudeći po naslovu (pogled ispod haube), očekivao sam da članak sadrži nešto opširnije objašnjenje sa tehničkim detaljima. Ovo više liči na perex za članak. Ako je perex, kada je nastavak? Možete li dobiti povrat novca? :-)
a šta biste željeli znati detaljnije?
Od članka sa "ispod haube" u naslovu, očekivao bih detaljan tehnički opis (autor bi mogao analizirati npr. prekomjerne troškove pri prebacivanju aplikacija ili kako se rukuje simultanim pristupom sistemskim resursima), poređenje sa drugim modelima (na primjer, sa jailbreakiranim iPhoneom). Idealno je to podržati nekim mjerenjima. Jednostavno sam očekivao mnogo više od članka koji u naslovu ima "ispod haube" od ovog vrlo površnog opisa.
Postoji li neki icq klijent koji radi kontinuirano u pozadini kao skype i ne prekida vezu?
aplikacija ima 10 sekundi da pređe u režim suspenzije, a ne 10 minuta... i tokom ovog procesa, neki dijelovi mogu, ali ne moraju "visiti" na backend servisima, od kojih su neki već navedeni gore - to je ono što Apple naziva "pametnim" "multitasking.... onda ju je sistem oborio
Aplikacija može zahtijevati dodatno vrijeme ako se nešto preuzima, učitava ili obrađuje. To nema nikakve veze sa GPS-om, VoIP-om ili puštanjem muzike, koji rade u minimalističkom načinu rada neograničeno vrijeme.