Još uvijek ima mnogo ljudi koji ne znaju kako multitasking funkcionira u iOS-u. Za početak je, međutim, potrebno istaknuti kako se ne radi o pravom multitaskingu, već o vrlo pametnom rješenju koje ne opterećuje ni sustav ni korisnika.
Često se mogu čuti praznovjerja da aplikacije koje rade u pozadini u iOS-u pune radnu memoriju, što dovodi do usporavanja sustava i trajanja baterije, pa bi ih korisnik trebao ručno isključiti. Multitasking traka zapravo ne sadrži popis svih pokrenutih pozadinskih procesa, već samo najnovije pokrenute aplikacije. Dakle, korisnik ne mora brinuti o procesima koji se izvode u pozadini, osim u nekoliko slučajeva. Kada pritisnete tipku Home, aplikacija obično ide u stanje mirovanja ili se zatvara, tako da više ne opterećuje procesor ili bateriju te po potrebi oslobađa potrebnu memoriju.
Dakle, ovo nije potpuni multitasking kada imate desetke pokrenutih procesa u prvom planu, koji se pauziraju ili potpuno isključuju ako je potrebno. Samo nekoliko sekundarnih procesa radi u pozadini. Zato ćete se rijetko susresti s padom aplikacije na iOS-u, primjerice Android je zatrpan pokrenutim aplikacijama o kojima korisnik mora brinuti. S jedne strane to čini rad s uređajem neugodnim, as druge strane uzrokuje, primjerice, sporo pokretanje i prijelaze između aplikacija.
Vrsta vremena izvođenja aplikacije
Aplikacija na vašem iOS uređaju je u jednom od ovih 5 stanja:
- Trčanje: aplikacija je pokrenuta i radi u prvom planu
- Pozadina: još uvijek radi, ali radi u pozadini (možemo koristiti druge aplikacije)
- Obustavljeno: Još uvijek koristi RAM, ali ne radi
- Neaktivno: aplikacija radi, ali neizravne naredbe (na primjer, kada zaključate uređaj dok je aplikacija pokrenuta)
- Ne trčim: Aplikacija je prekinuta ili nije pokrenuta
Do zabune dolazi kada aplikacija ode u pozadinu kako ne bi smetala. Kada pritisnete tipku Home ili upotrijebite pokret za zatvaranje aplikacije (iPad), aplikacija odlazi u pozadinu. Većina aplikacija obustavljena je u roku od nekoliko sekundi (pohranjuju se u RAM iUređaja tako da se mogu brzo pokrenuti, ne opterećuju previše procesor i time štede bateriju) Možda mislite da ako aplikacija nastavi koristiti memoriju, imate da ga ručno izbrišete da biste ga oslobodili. Ali vi to ne morate učiniti, jer će iOS to učiniti umjesto vas. Ako vam je zahtjevna aplikacija suspendirana u pozadini, poput igre koja koristi veliku količinu RAM-a, iOS će je automatski ukloniti iz memorije kada je to potrebno, a možete je ponovno pokrenuti dodirivanjem ikone aplikacije.
Nijedno od ovih stanja ne odražava se na traci višezadaćnosti, ploča prikazuje samo popis nedavno pokrenutih aplikacija bez obzira na to je li aplikacija zaustavljena, pauzirana ili radi u pozadini. Također možete primijetiti da se aplikacija koja je trenutno pokrenuta ne pojavljuje na ploči Multitasking
Pozadinski zadaci
Inače, kada pritisnete tipku Home, aplikacija će raditi u pozadini, a ako je ne koristite, automatski će pauzirati unutar pet sekundi. Dakle, ako preuzimate podcast, na primjer, sustav ga procjenjuje kao pokrenutu aplikaciju i odgađa prekid za deset minuta. Najkasnije nakon deset minuta proces se oslobađa iz memorije. Ukratko, ne morate brinuti o prekidanju preuzimanja pritiskom na tipku Home, ako ne treba više od 10 minuta da se dovrši.
Neodređeni rad u pozadini
U slučaju neaktivnosti sustav prekida aplikaciju unutar pet sekundi, a u slučaju preuzimanja prekid se odgađa deset minuta. Međutim, postoji mali broj aplikacija koje zahtijevaju rad u pozadini. Evo nekoliko primjera aplikacija koje mogu raditi u pozadini neograničeno u iOS-u 5:
- Aplikacije koje reproduciraju zvuk i moraju se prekinuti na neko vrijeme (pauziranje glazbe tijekom telefonskog poziva i sl.),
- Aplikacije koje prate vašu lokaciju (navigacijski softver),
- Aplikacije koje primaju VoIP pozive, na primjer ako koristite Skype, možete primiti poziv čak i kada je aplikacija u pozadini,
- Automatsko preuzimanje (npr. Kiosk).
Sve bi se aplikacije trebale zatvoriti ako više ne obavljaju zadatak (kao što je preuzimanje u pozadini). Međutim, postoje iznimke koje neprekidno rade u pozadini, poput izvorne aplikacije Mail. Ako rade u pozadini, zauzimaju memoriju, CPU ili smanjuju trajanje baterije
Aplikacije kojima je dopušten rad u pozadini na neodređeno vrijeme mogu raditi sve što rade dok su pokrenute, od reprodukcije glazbe do preuzimanja novih epizoda Podcasta.
Kao što sam već spomenuo, korisnik nikada ne mora zatvoriti aplikacije koje rade u pozadini. Jedina iznimka od ovoga je kada se aplikacija koja radi u pozadini ruši ili se ne probudi pravilno iz stanja mirovanja. Korisnik tada može ručno zatvoriti aplikacije na multitasking traci, no to se rijetko događa.
Dakle, općenito, ne morate upravljati pozadinskim procesima jer će se sustav sam pobrinuti za njih. Zato je iOS tako svjež i brz sustav.
Iz perspektive programera
Aplikacija može reagirati s ukupno šest različitih stanja u sklopu multitaskinga:
1. applicationWillResignActive
U prijevodu, ovo stanje znači da će se aplikacija ubuduće povući kao aktivna aplikacija (tj. aplikacija u prvom planu) (stvar nekoliko milisekundi). To se događa, primjerice, prilikom primanja poziva tijekom korištenja aplikacije, ali u isto vrijeme, ova metoda također uzrokuje ovo stanje prije nego što aplikacija ode u pozadinu, tako da morate uzeti u obzir te promjene. Ova metoda je također prikladna tako da npr. obustavlja sve aktivnosti koje obavlja kada postoji dolazni poziv i čeka do kraja poziva.
2. aplikacijaDidEnterBackground
Status označava da je aplikacija otišla u pozadinu. Programeri bi trebali koristiti ovu metodu za obustavu svih procesa koji se ne moraju nužno izvoditi u pozadini i brisanje memorije od neiskorištenih podataka i drugih procesa, kao što su tajmeri koji ističu, brisanje učitanih slika iz memorije koje neće nužno biti potrebne ili zatvaranje veze s poslužiteljima, osim ako je ključno da aplikacija dovrši veze u pozadini. Kada se metoda pozove u aplikaciji, u biti bi se trebala koristiti za potpuno obustavljanje aplikacije ako se neki njen dio ne mora izvoditi u pozadini.
3. applicationWillEnterForeground
Ovo stanje je suprotno od prvog stanja, gdje će aplikacija preći u aktivno stanje. Stanje jednostavno znači da će se aplikacija u stanju mirovanja nastaviti iz pozadine i pojaviti u prednjem planu unutar sljedećih nekoliko milisekundi. programeri bi trebali koristiti ovu metodu za nastavak svih procesa koji su bili neaktivni dok je aplikacija bila u pozadini. Veze s poslužiteljima trebale bi se ponovno uspostaviti, mjerači vremena poništiti, slike i podaci učitati u memoriju, a drugi potrebni procesi mogu se nastaviti neposredno prije nego što korisnik ponovno vidi učitanu aplikaciju.
4. aplikacija je postala aktivna
Stanje označava da je aplikacija upravo postala aktivna nakon vraćanja u prvi plan. Ovo je metoda kojom se mogu napraviti dodatne prilagodbe korisničkog sučelja ili vratiti UI u prvobitno stanje i sl. To se zapravo događa u trenutku kada korisnik već vidi aplikaciju na zaslonu, pa je potrebno oprezno odredite što se događa u metodi ove i u prethodnoj metodi. Pozivaju se jedan za drugim s razlikom od nekoliko milisekundi.
5. ApplicationWillTerminate
Ovo se stanje događa nekoliko milisekundi prije nego što aplikacija izađe, odnosno prije nego što se aplikacija zapravo prekine. Bilo ručno iz multitaskinga ili kada isključite uređaj. Metodu treba koristiti za spremanje obrađenih podataka, za prekid svih aktivnosti i brisanje podataka koji više neće biti potrebni.
6. applicationDidReceiveMemoryWarning
Posljednja je država o kojoj se najviše raspravlja. Odgovoran je za, ako je potrebno, uklanjanje aplikacije iz iOS memorije ako nepotrebno koristi resurse sustava. Ne znam točno što iOS radi s pozadinskim aplikacijama, ali ako mu je potrebna aplikacija za oslobađanje resursa drugim procesima, traži ga upozorenjem o memoriji da oslobodi resurse koje ima. Tako se ova metoda poziva u aplikaciji. Programeri bi to trebali implementirati tako da aplikacija odustane od memorije koju je dodijelila, spremi sve što je u tijeku, izbriše nepotrebne podatke iz memorije i na drugi način adekvatno oslobodi memoriju. Istina je da mnogi programeri, čak i početnici, ne razmišljaju o takvim stvarima i ne razumiju ih, a onda se može dogoditi da njihova aplikacija ugrozi trajanje baterije i/ili nepotrebno troši resurse sustava, čak iu pozadini.
Presuda
Tih šest stanja i njima pridružene metode pozadina su svih "multitaskinga" u iOS-u. to je sjajan sustav, sve dok programeri ne ignoriraju činjenicu da postoji potreba za odgovornošću o tome što aplikacija izbacuje na uređajima njihovih korisnika, jesu li minimizirani ili dobivaju upozorenja od sustava i tako dalje.
Izvor: macworld.com
Autori: Jakub Požárek, Martin Doubek (ArnieX)
Imate li i vi problem za riješiti? Trebate li savjet ili možda pronaći pravu primjenu? Ne ustručavajte se kontaktirati nas putem obrasca u odjeljku Savjetovanje, sljedeći put ćemo odgovoriti na vaše pitanje.
Pozdrav, stvarno super članak, ali pitam se imate li tehničku podršku za njega. Zato što sam bateriju nekoliko puta riješio navečer prije spavanja i dogodilo se da je s isključenim wifijem i mobilnim podacima trebalo više nego u drugom slučaju s isključenim wifijem i samo 3G.
Nažalost, iskustvo je da se u iOS-u aplikacije moraju ručno gasiti, a sustav više ne radi tako dobro kao prije.
iPhone sam zamijenio Windows Phoneom (Samsung Omnia W za 6200,-) i brzina sustava je na sasvim drugoj razini.
Bojim se da ću, kad izađu Windows 8 Metro tableti, zamijeniti i iPad...
@007 – da, ako uspoređuješ stare iPhone3G s novim WP, onda da (tko bi to očekivao?) WP će biti dosta brži. Inače ti tračevi o Karlulki ne idu na ruku i bio je primjeren usporediti trenutni HW. Kupio sam i WP7 i na kraju dobio 4s, što predstavlja potpuno drugačiju razinu upotrebljivosti od WP7. Zato ugodno prolazite i beskonačno se pomičite kroz pločice.
Potpuno se slažem sa Pajom
Opet bih pridonio iz krhotina druge bačve - Samsung Galaxy S i iPhone 4 - rekao bih usporedivih u smislu starosti? U vrijeme iOS-a 4, a što se tiče upotrebljivosti i brzine negdje drugdje osim Androida, Apple je jako dobro riješio koncept rada s aplikacijama, ali to više nije slučaj s Androidom. Na kraju sam ipak završio s 4S i nemam zamjerki, jer "jednostavno radi" .. i radi jako brzo!
Teorija je prekrasna... Ali u praksi svejedno zatvorim aplikaciju u baru ;)
Hvala, vrlo zanimljivo, pragmatično, zanimljivo, ne nedostaje mu zamaha i dubine. Značajno naglašavajući opsjednutost današnje mladeži ovim zabranjenim brendom! Ali hvala za nju, kao i za ovaj članak.
Članak je potpuno pogrešan.
Aplikacija se ne zatvara kada se pritisne tipka Home, kao što je pogrešno navedeno, već se zaustavlja. tj. definitivno nemoj brisati iz memorije i nemoj odustati. Samo pauzirajte izvođenje, iOS će ovoj aplikaciji dati 0% CPU vremena. Definitivno se ne "swapuje" nigdje u memoriji iUređaja, kako stoji u članku. To je zapravo zahvaljujući činjenici da je moguće koristiti prebacivanje aplikacija.
Aplikacija se uklanja iz memorije kada telefon ima malo memorije za pokretanje drugih aplikacija s višim prioritetom (obično je druga aplikacija pokrenuta u prvom planu).
U prvom slučaju, u pravu ste, bila je pogreška u prijevodu. Što se swappinga tiče, ovdje ne govorimo o tome, govorimo o radnoj memoriji, a ne o prostoru za pohranu u iOS uređaju.
slika aplikacije pohranjuje se u memoriju na ograničeno vrijeme dok se ponovno ne pozove naredbom (pogledajte 13,7 GB od 16 GB: 2,3 GB je rezervirano za sustav i suspendirane aplikacije)
Dakle, potrebno je razlikovati aplikacije kao što su Navigacija, Skype i slično, te aplikacije ostaju aktivne i u pozadini ili neka funkcija ne prestaje i nastavlja npr. slati podatke o svojoj lokaciji ili informacije o lokaciji. Ili kao Vokul u pord modu slušanja a multitasking i dalje sluša u pozadini.
Ove aplikacije troše bateriju i potrebno ih je zatvoriti ručno, a ne čekati iOS. s drugima nije potrebno, tamo samo u slučaju da se aplikacija sruši.
Ne mogu se složiti s člankom. Min. na 1. generaciji iPada (iOS 5.0.1) jasno je vidjeti imam li puno "otvorenih" aplikacija u multitasking traci ili samo nekoliko. iOS doduše pokušava očistiti memoriju, ali to očito nije dovoljno – mala veličina RAM-a mu je vjerojatno najveća slabost.
pa puno ovisi o sustavu i hardveru koji se koristi, sasvim je logično da će na iPadu 1 s iOS 5.0.1 biti lošije nego da je na iPadu 2. generacije
Oprosti prijatelju, ovo je opis IDEALNOG načina na koji bi trebao funkcionirati. Nažalost, stvarnost je potpuno drugačija i to biste znali da koristite Appleove proizvode, barem onoliko koliko i ja (tj. povremeno).
"Često možete čuti praznovjerja da aplikacije koje rade u pozadini u iOS-u pune radnu memoriju,"
To nije praznovjerje, to je samo činjenica. Uostalom, to i sam tvrdiš u članku.
"Kao što sam ranije spomenuo, korisnik nikada ne mora zatvoriti aplikacije koje rade u pozadini."
GLUPOSTI. To je samo sranje, jabučna propaganda, nemoj se ljutiti na mene.
“Ali ne morate to učiniti, jer će iOS to učiniti umjesto vas. Ako imate zahtjevnu aplikaciju obustavljenu u pozadini, poput igre koja koristi veliku količinu RAM-a, iOS će je automatski ukloniti iz memorije kada je to potrebno, a možete je ponovno pokrenuti dodirivanjem ikone aplikacije.”
Nije istina. Situacija je malo drugačija. Tipičan primjer – imam zahtjevne aplikacije koje rade u pozadini, trebam igre. Pokrenem preglednik, otvorim nekoliko kartica -> treba mi više memorije. Što će se dogoditi? Zahtjevne aplikacije držim u pozadini, naprotiv PADA I SAM PREGLEDNIK. Ako zahtjevne aplikacije zatvorim ručno, preglednik dugo radi bez problema.
Ovo je praksa, a ne teorija. I čudi me da, kao dugogodišnji korisnik Appleovih proizvoda, to još uvijek ne znate.
Hvala, ovo je vrlo dobro opisano i dobro objašnjeno. Prilično ste mi pomogli ;-) ♥
Samo za uvod, nisam ni za ni protiv iOS-a, kao ni kod Androida, ali ima tu par čudnih stvari, ako kako je ovdje napisano: "kod iOS-a rijetko naiđete na pad aplikacije", onda kod Androida, aplikacije se vjerojatno ruše jednom godišnje: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Da, ali slučajevi kada morate ručno zatvoriti aplikaciju su stvarno minimalni, koristio sam ga otprilike jednom? ;-) a davati link na usporedni test od Mobilemanije je sasvim besmisleno, kad budem htio čitati o reklami koju je Google platio, pogledat ću tamo ;-) svatko može dobiti bilo koji android telefon u ruke i to neće raditi čisto, to jest, s izuzetkom Galaxy Nexusa, koji je sustav više-manje skrojen po mjeri. Generalno, android je katastrofa
@Mek – Ja svakodnevno koristim Apple proizvode nekoliko godina i ovo mi se nikada nije dogodilo, tako da tvoja teorija nekako ne funkcionira.
OT:
@redakce – Vidi se da se na stranici stalno radi ili se nešto događa s njom, ali imam osjećaj da ne prođe tjedan dana da sve proradi kako treba. I više baš i ne dolazim ovamo, jer mi novi izgled ne stoji. Ja sam barem koristio mobilnu verziju na iPhoneu, ali sad nikako ne radi - kako to? Trenutno ne odgovaraju na objave u komentarima.
@SteveJSF Nažalost, stvari ne ispadnu uvijek onako kako želimo. Što se tiče odgovora, novi SEO dodatak ih je pokvario, trenutno se rješava.
WP-Touch je također ukinuo našu uslugu iz nekog razloga, pa smo odlučili smisliti bolje rješenje od ovog dodatka. Tako da se uskoro možete veseliti sljedećim vijestima :-)
Lijep članak. Što se prakse tiče, želim reći da se slažem s nekoliko stvari i uglavnom radi kako je navedeno, ali nažalost još uvijek ima loše napisanih aplikacija koje se ne ponašaju korektno, a tu su i slučajevi poput ovog primijetili neki čitatelji. Mislim da je Skype jako dobar primjer, iz prakse znam da još uvijek radi u pozadini (i to je u redu i tako treba biti), ali problem je što ta aplikacija jako troši bateriju uređaja i Ne mogu ga više dobro vidjeti. Nasuprot tome, aplikacije kao što su Facebook, Badoo itd. također još uvijek rade u pozadini, ali im je potrošnja gotovo neprimjetna (barem ja ne primjećujem). Dakle, mislim da je greška u pojedinačnim aplikacijama. Da znate koje, dovoljno bi bilo ručno isključiti samo njih!
Dakle, praksa je da Facebook radi po potrebi, a Skype samo po potrebi.
Pa, s druge strane, ako trebam štedjeti bateriju, a znam da iPhone moram držati "na životu" što duže, isključim i sve nepotrebno u multitaskingu, ali uglavnom to nema nekog velikog utjecaja, ali ako je potrebno ograničavam 3G, sav mobilni internet, WiFi, usluge lokacije, način rada u zrakoplovu, jačinu osvjetljenja itd. Kao dio rutine, također isključujem gore navedene aplikacije u multitaskingu.
Tako da osobno mislim da je članak istinit, nažalost neki programeri opovrgavaju te stvari svojim aplikacijama, jer su njihove aplikacije netočne i po mom mišljenju postoje samo dva rješenja za to 1. Ako je moguće ne koristiti aplikaciju i pronaći alternativa ako je moguće, ili 2. Ako nije moguće, pogledajte npr. Skype, napišite to datom programeru u izvješću i nadajte se da će oni nešto poduzeti po tom pitanju.
Možda je besmisleno onemogućavati aplikacije ručno, ali ja to svejedno radim. Također sam pokušao ne isključiti aplikacijski sustav, pustiti ih da rade (ili ih ostaviti da spavaju u pozadini) i trajanje baterije je bilo puno kraće, također je bilo potrebno ponovno pokrenuti iPad 2 nakon otprilike tri tjedna, reagirao je sporo. Stoga ručno gasim aplikacije, baterija traje dulje, nedavno sam ponovno pokrenuo sustav na Božić i radi dobro.
Inače, isto radim u Mac OS X-u, samo zatvorim aplikaciju koja mi ne treba (CMD+Q), bolje je to nego da spava u pozadini i nepotrebno troši RAM (što OS X može) t raditi s vrlo dobro). Imam malo RAM-a, samo 8 GB, ali sa 7 GB u Windowsu 8 sustav nije sporo reagirao niti se mijenjao, u OS X je to prilično česta pojava (nikada nisam gasio računalo, radim to i s Macom, tako da mjesec dana i više nije iznimka, problem je što ponekad moram ponovno pokrenuti Mac iz predostrožnosti da oslobodim RAM i "ubrzam", Windows 7 to ne treba).
Više me zanima kako zapravo uništiti aplikaciju. Ono što se meni dogodilo je da je aplikacija (konkretno na Geocachingu) došla u stanje u kojem je učitavala nešto s nadređenog poslužitelja i zapela u tom stanju. Tipka Home je radila, nakon ponovnog pokretanja vratila se u zamrznuto stanje (tamo gdje sam stao). Ručni izlaz (na multitasting meni, držite ikonu i minus za zatvaranje) = aplikacija je nestala, nakon ponovnog pokretanja otvorila se u originalnom stanju gdje se zamrznula. Pa sam zatvorio sve, ugasio telefon, uključio ga, dvaput kliknuo HOME i gle čuda – sve aplikacije su bile tamo kao prije zatvaranja neposredno prije gašenja. Ni restart nije pomogao - drži home i gornje dok se ne zagrije. Jedino što je pomoglo je uklanjanje aplikacije s telefona, ponovno pokretanje i ponovno instaliranje na mobitel. Nekako ga nisam prihvatio.
Ovo upravljanje multitaskingom funkcionira i na programerima je da se nose s tim situacijama. Za one koje zanima detaljniji i stručniji opis cijele situacije, ovdje ću napisati kako je.
Aplikacija može odgovoriti na ukupno 6 stanja, a ta stanja su:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
applicationWillTerminate
applicationDidReceiveMemoryWarning
Sada ću pokušati detaljnije opisati ta stanja.
applicationWillResignActive – ovo stanje znači da će se u budućnosti (u nekoliko milisekundi) aplikacija odjaviti kao aktivna aplikacija (tj. aplikacija u prvom planu) to se događa na primjer kada primite poziv tijekom korištenja aplikacije, ali u isto vrijeme ovo stoga će se ovo stanje pokrenuti čak i prije nego što aplikacija ode u pozadinu, pa morate uzeti u obzir ove promjene. Ova metoda je također prikladna tako da npr. obustavlja sve aktivnosti koje obavlja kada postoji dolazni poziv i čeka do kraja poziva.
applicationDidEnterBackground - ovaj status označava da je aplikacija ušla u pozadinu, programeri bi trebali koristiti ovu metodu za obustavu svih procesa koji se ne moraju nužno izvoditi u pozadini i očistiti memoriju od neiskorištenih podataka i drugih procesa, na primjer, isteći vremena, brisati iz slike učitane u memoriju koje neće nužno biti potrebne ili prekinuti vezu s poslužiteljima ako aplikaciji nije kritično da dovrši vezu u pozadini. U osnovi, ova metoda kada se pozove u aplikaciji trebala bi se koristiti za potpuno obustavljanje aplikacije ako neki njen dio ne mora raditi u pozadini.
applicationWillEnterForeground – ovo stanje je suprotno od prvog stanja kada će aplikacija preći u aktivno stanje. Ovo stanje aplikacije jednostavno znači da će se u sljedećih nekoliko milisekundi aplikacija u stanju mirovanja nastaviti iz pozadine i pojaviti u prednjem planu (aplikacija ulazi u prvi plan), programeri bi ovu metodu trebali koristiti za nastavak svih procesa koji su bili neaktivni dok je aplikacija bila u pozadini, veze s poslužiteljima trebale bi se ponovno uspostaviti, mjerači vremena poništiti, slike i podaci učitati u memoriju, a drugi potrebni procesi mogu se nastaviti neposredno prije nego što korisnik ponovno vidi učitanu aplikaciju.
applicationDidBecomeActive – ovo stanje označava da je aplikacija upravo postala aktivna nakon vraćanja u prvi plan, ovo je metoda koja se može koristiti za dodatne prilagodbe korisničkog sučelja ili vraćanje korisničkog sučelja u izvorno stanje, itd. ova se metoda zapravo događa kada korisnik već može vidjeti na displeju, pa je potrebno iz ravnoteže utvrditi što se događa u ovoj metodi iu prethodnoj metodi. Pozivaju se jedan za drugim s razlikom od nekoliko milisekundi.
applicationWillTerminate - ovo stanje se događa nekoliko milisekundi prije nego što aplikacija prestane, odnosno prije nego što aplikacija stvarno prestane. Bilo ručno iz multitaskinga ili kada isključite uređaj. Ovu metodu treba koristiti za spremanje obrađenih podataka te za prekid svih aktivnosti i brisanje podataka koji više neće biti potrebni.
applicationDidReceiveMemoryWarning - i to je uvjet o kojem se ovdje puno raspravlja, ako je potrebno, iOS će ukloniti aplikaciju iz memorije ako nepotrebno koristi resurse sustava. Ne znam točno što iOS radi s pozadinskim aplikacijama, ali ako mu je potrebna aplikacija za oslobađanje resursa drugim procesima, traži ga upozorenjem o memoriji da oslobodi resurse koje drži. Dakle, ova metoda se poziva u aplikaciji, a programeri bi je trebali implementirati tako da aplikacija odustane od memorije koju ima, spremi obrađene i izbriše nepotrebne podatke iz memorije, a inače adekvatno oslobodi memoriju. Istina je da mnogi programeri, primjerice početnici, ne razmišljaju o takvim stvarima ili ih ne razumiju, a onda se može dogoditi da njihova aplikacija ugrozi trajanje baterije i/ili nepotrebno troši resurse sustava čak iu pozadini. Ne znam kako će se iOS ponašati ako aplikacija ne radi ništa nakon što primi upozorenje o memoriji i nastavi trošiti resurse sustava kao i prije.
Ovih nekoliko stanja i pridruženih metoda stoje iza cijele "višezadaćnosti" u iOS-u... to je izvrstan sustav ako programeri ne ignoriraju potrebu da budu odgovorni za ono što će aplikacije isporučiti na uređajima svojih korisnika ako su minimizirane ili primajte upozorenja od sustava i više...
Nadam se da će vam ovaj kratki opis pomoći da shvatite kako je aplikacija uključena u to da sve radi glatko. Tako da je gotovo moguće reći da se radi o pogrešci nepravilnog korištenja od strane korisnika, što se može shvatiti kao - ako u većem broju koristite uglavnom besplatne aplikacije programera amatera, vaš iOS uređaj će raditi lošije nego ako koristite veliki broj besplatnih i plaćenih aplikacija iskusnih ili profesionalnih programera. To ne znači da u oba kruga nema iznimaka. Primjerice, foursquare se ponaša prilično čudno i zahtjevno, a pritom bi se moglo očekivati da su vrlo vješti developeri koji puno vremena daju upravljanju memorijom i baterijom, no upravo je suprotno. Najveći problem kod 4SQ je komunikacija sa serverima koja često visi i bude preopterećena. Ovo je samo primjer činjenice da čak i poznate aplikacije imaju problema, što ne mijenja činjenicu da je 4SQ izvrstan servis.
Zabavite se Jabuke!! :)
Informaciju smo dodali u članak uz ljubazno dopuštenje autora ;-)
Žao mi je, ENTER je bio posvuda između odlomaka, ovdje bi mogli nešto učiniti da komentari imaju barem malo RICH TEXT FORMATING.
ArnieX: hvala na komentaru!!
Onaj Faramir: Ja samo o tvom problemu, ne znam hoće li pomoći u tvom slučaju, ali iz vlastitog iskustva znam da ako zatvoriš aplikaciju (u multitaskingu) treba par sekundi dok se ne zatvori, pa ako isključite ga, preporučam pričekati nekoliko sekundi (ja čekam cca. 10 sekundi da budem siguran) dok definitivno ne završi i tek tada ga ponovno pokrećem.
Nema na čemu ;) Rado ću pomoći ako budem imao priliku doprinijeti.
Kako bi trebalo biti s Meebom, kad se preko njega ulogiram na ICQ ili FB chat on se nakon 10 minuta automatski odjavi i odem offline ili nastavlja raditi? hvala na pojašnjenju :P
Nakon desetak minuta jednostavno se prekida veza aplikacije s internetom. Međutim, i dalje ćete biti online na poslužitelju Meeba i primit ćete push obavijest ako vam netko piše. Nakon ponovnog otvaranja aplikacije, veza će se uspostaviti za trenutak i možete nastaviti veselo razgovarati.
Dakle, ako sam dobro razumio članak koji ste povezali, statistika se odnosi samo na rušenje aplikacije kada se pokrene, što je prilično mali postotak slučajeva u kojima može doći do rušenja. Stoga je iz ovog "istraživanja" nemoguće zaključiti da je iOS po meni manje stabilan. Nadalje, prevoditelj članka preuzetog s Forbesa zaboravio je spomenuti da tvrtku koja daje podatke o rušenjima aplikacija podržava između ostalih i Google ("Crittercism, iza kojeg stoji Google Ventures,...").