Još uvijek ima puno ljudi koji ne znaju kako multitasking funkcionira u iOS-u. Za početak, međutim, potrebno je istaći da ovo nije pravi multitasking, već vrlo pametno rješenje koje ne opterećuje ni sistem ni korisnika.
Često se mogu čuti praznovjerja da aplikacije koje rade u pozadini u iOS-u pune operativnu memoriju, što dovodi do usporavanja sistema i kraćeg trajanja baterije, pa bi ih korisnik trebao ručno isključiti. Traka za više zadataka zapravo ne sadrži listu svih pokrenutih pozadinskih procesa, već samo najnovije pokrenute aplikacije. Dakle, korisnik ne mora da brine o procesima koji se pokreću 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 i po potrebi oslobađa potrebnu memoriju.
Ovo nije potpuni multitasking kada imate desetine pokrenutih procesa.Samo jedna aplikacija uvijek radi u prvom planu, koja se pauzira ili potpuno isključuje ako je potrebno. Samo nekoliko sekundarnih procesa radi u pozadini. Zbog toga ćete rijetko naići na pad aplikacije na iOS-u, na primjer Android je pretrpan pokrenutim aplikacijama o kojima se korisnik mora pobrinuti. S jedne strane, to čini rad sa uređajem neugodnim, a s druge strane uzrokuje, na primjer, sporo pokretanje i prelaze između aplikacija.
Tip vremena izvođenja aplikacije
Aplikacija na vašem iOS uređaju je u jednom od ovih 5 stanja:
- trčanje: aplikacija se pokreće i radi u prvom planu
- Pozadina: još uvijek radi, ali radi u pozadini (možemo koristiti druge aplikacije)
- Suspendirano: Još uvijek koristi RAM, ali ne radi
- Neaktivno: aplikacija je pokrenuta, ali indirektne komande (na primjer, kada zaključate uređaj dok je aplikacija pokrenuta)
- Ne radi: Aplikacija je prekinuta ili nije pokrenuta
Do zabune dolazi kada aplikacija pređe u pozadinu kako ne bi smetala. Kada pritisnete tipku Home ili koristite pokret za zatvaranje aplikacije (iPad), aplikacija prelazi u pozadinu. Većina aplikacija se suspenduje u roku od nekoliko sekundi (Skladištene su u RAM-u iDevicea tako da se mogu brzo pokrenuti, ne opterećuju procesor toliko i time štede vijek trajanja baterije) Možda mislite da ako aplikacija nastavi koristiti memoriju, imate da ga ručno izbrišete da ga oslobodite. Ali ne morate to da radite, jer će iOS to učiniti za vas. Ako imate zahtjevnu aplikaciju suspendovanu u pozadini, kao što je igra koja koristi veliku količinu RAM-a, iOS će je automatski ukloniti iz memorije kada je to potrebno, a možete je ponovo pokrenuti dodirom na ikonu aplikacije.
Nijedno od ovih stanja se ne odražava na traci za više zadataka, panel prikazuje samo listu nedavno pokrenutih aplikacija bez obzira da li je aplikacija zaustavljena, pauzirana ili radi u pozadini. Također možete primijetiti da se aplikacija koja je trenutno pokrenuta ne pojavljuje na panelu za više zadataka
Pozadinski zadaci
Obično, kada pritisnete tipku Home, aplikacija će raditi u pozadini, a ako je ne koristite, automatski će se pauzirati u roku od pet sekundi. Dakle, ako preuzimate podcast, na primjer, sistem ga procjenjuje kao pokrenutu aplikaciju i odlaže završetak za deset minuta. Nakon deset minuta, proces se oslobađa iz memorije. Ukratko, ne morate brinuti o prekidu preuzimanja pritiskom na tipku Home, ako vam nije potrebno više od 10 minuta da se završi.
Neograničeno pokretanje u pozadini
U slučaju neaktivnosti, sistem prekida aplikaciju u roku od pet sekundi, a u slučaju preuzimanja, prekid se odlaže deset minuta. Međutim, postoji mali broj aplikacija koje zahtijevaju rad u pozadini. Evo nekoliko primjera aplikacija koje mogu raditi u pozadini neograničeno na iOS 5:
- Aplikacije koje puštaju zvuk i moraju biti prekinute na neko vrijeme (pauziranje muzike tokom telefonskog poziva, itd.),
- 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,
- Automatska preuzimanja (npr. Kiosk).
Sve aplikacije treba zatvoriti ako više ne obavljaju zadatak (kao što su preuzimanja u pozadini). Međutim, postoje izuzeci koji kontinuirano rade u pozadini, kao što je izvorna aplikacija Mail. Ako rade u pozadini, zauzimaju memoriju, CPU ili smanjuju vijek trajanja baterije
Aplikacije kojima je dozvoljeno da rade u pozadini neograničeno mogu raditi sve što rade dok rade, od puštanja muzike do preuzimanja novih epizoda Podcasta.
Kao što sam već spomenuo, korisnik nikada ne mora zatvoriti aplikacije koje rade u pozadini. Jedini izuzetak od ovoga je kada se aplikacija koja radi u pozadini ruši ili se ne probudi iz stanja mirovanja kako treba. Korisnik tada može ručno zatvoriti aplikacije u traci za više zadataka, ali to se rijetko dešava.
Dakle, generalno, ne morate upravljati pozadinskim procesima jer će se sistem sam pobrinuti za njih. Zato je iOS tako svjež i brz sistem.
Iz perspektive programera
Aplikacija može reagirati sa ukupno šest različitih stanja kao dio multitaskinga:
1. applicationWillResignActive
U prijevodu, ovo stanje znači da će aplikacija odustati kao aktivna aplikacija (tj. aplikacija u prvom planu) u budućnosti (u pitanju nekoliko milisekundi). To se događa, na primjer, kada primite poziv dok koristite aplikaciju, ali u isto vrijeme, ova metoda također uzrokuje ovo stanje prije nego što aplikacija pređe u pozadinu, tako da morate uzeti u obzir ove promjene. Ova metoda je također prikladna tako da, na primjer, obustavlja sve aktivnosti koje obavlja kada dođe do dolaznog poziva i čeka do kraja poziva.
2. applicationDidEnterBackground
Status pokazuje da je aplikacija otišla u pozadinu. Programeri bi trebali koristiti ovu metodu da obustave sve procese koji ne moraju nužno raditi u pozadini i očistiti memoriju od neiskorištenih podataka i drugih procesa, kao što su tajmeri isteka, brisanje učitanih slika iz memorije koje neće nužno biti potrebne ili zatvaranje veze sa serverima, osim ako je kritično za aplikaciju da dovrši veze u pozadini. Kada se metoda pozove u aplikaciji, u suštini bi se trebala koristiti za potpuno suspendovanje aplikacije ako neki njen dio nije potreban da radi 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 za spavanje nastaviti iz pozadine i pojaviti se u prvom planu u narednih nekoliko milisekundi. programeri bi trebali koristiti ovu metodu za nastavak svih procesa koji su bili neaktivni dok je aplikacija bila u pozadini. Trebalo bi ponovo uspostaviti veze sa serverima, resetovati tajmere, slike i podaci učitati u memoriju, a drugi neophodni procesi se mogu nastaviti neposredno pre nego što korisnik ponovo vidi učitanu aplikaciju.
4. applicationDidBecomeActive
Stanje označava da je aplikacija upravo postala aktivna nakon što je vraćena u prvi plan. Ovo je metoda koja se može koristiti za dodatna podešavanja korisničkog interfejsa ili za vraćanje korisničkog interfejsa u prvobitno stanje itd. To se zapravo dešava u trenutku kada korisnik već vidi aplikaciju na ekranu, pa je potrebno oprezno odredite šta se dešava u metodi ove i prethodne metode. Pozivaju se jedan za drugim s razlikom od nekoliko milisekundi.
5. applicationWillTerminate
Ovo stanje se događa nekoliko milisekundi prije nego što aplikacija izađe, odnosno prije nego što se aplikacija zapravo završi. Ili ručno iz više zadataka ili kada isključite uređaj. Metodu treba koristiti za spremanje obrađenih podataka, za prekid svih aktivnosti i za brisanje podataka koji više neće biti potrebni.
6. applicationDidReceiveMemoryWarning
To je posljednja država o kojoj se najviše raspravlja. On je odgovoran za, ako je potrebno, uklanjanje aplikacije iz iOS memorije ako nepotrebno koristi sistemske resurse. Ne znam konkretno što iOS radi s pozadinskim aplikacijama, ali ako mu je potrebna aplikacija za oslobađanje resursa drugim procesima, traži od njega memorijsko upozorenje da oslobodi sve resurse koje ima. Dakle, ova metoda se poziva u aplikaciji. Programeri bi ga trebali implementirati tako da se aplikacija odrekne memorije koju je dodijelila, pohrani sve što je u toku, izbriše nepotrebne podatke iz memorije i na drugi način adekvatno oslobodi memoriju. Istina je da mnogi programeri, čak i početnici, o takvim stvarima ne razmišljaju niti ih razumiju, a onda se može dogoditi da njihova aplikacija ugrozi trajanje baterije i/ili nepotrebno troše sistemske resurse, čak i u pozadini.
Presuda
Ovih šest stanja i njihove pridružene metode su pozadina svih "multitasking" u iOS-u. to je odličan sistem, sve dok programeri ne zanemaruju činjenicu da postoji potreba da budu odgovorni za ono što aplikacija šalje na uređaje svojih korisnika, ako su minimizirani ili dobijaju upozorenja od sistema i tako dalje.
Izvor: macworld.com
Autori: Jakub Požárek, Martin Doubek (ArnieX)
Da li i vi imate problem za rješavanje? Trebate savjet ili možda pronaći pravu aplikaciju? Ne ustručavajte se da nas kontaktirate putem obrasca u odjeljku Savjetovanje, sljedeći put ćemo odgovoriti na vaše pitanje.
Pozdrav, stvarno super članak, ali me zanima da li imate tehničku podršku za njega. Jer sam bateriju nekoliko puta rješavao uveče prije spavanja i dešavalo se da sa isključenim wifi-om i mobilnim podacima treba više nego u drugom slučaju sa isključenim wifi-jem i samo 3G.
Nažalost, iskustvo je da se u iOS-u aplikacije moraju isključiti ručno, a sistem više ne radi kao prije.
Zamenio sam svoj iPhone sa Windows Phone (Samsung Omnia W za 6200,-) i brzina sistema je na potpuno drugom nivou.
Bojim se da ću, kada izađu Windows 8 Metro tableti, zamijeniti i iPad...
@007 – da, ako upoređujete stare iPhone3G sa novim WP, onda da (ko bi to očekivao?) WP će biti dosta brži. Inače, tračevi o Karlulki vam ne idu naruku i valjalo je uporediti trenutni HW. Kupio sam i WP7 i na kraju dobio 4s, što predstavlja potpuno drugačiji nivo upotrebljivosti od WP7. Zato prođite ugodno i beskonačno skrolujte kroz pločice.
U potpunosti se slazem sa Pajom
Ponovo bih doprineo iz ostataka drugog bureta - Samsung Galaxy S i iPhone 4 - rekao bih uporedivi u smislu starosti? U vrijeme iOS-a 4, a što se tiče upotrebljivosti i brzine negdje drugdje osim Androida, Apple je vrlo dobro riješio koncept rada sa aplikacijama, ali isto više ne vrijedi za Android. Na kraju sam ipak završio sa 4S-om i nemam zamjerki, jer "samo radi" .. i radi vrlo brzo!
Teorija je prelepa... Ali u praksi ja i dalje zatvaram aplikaciju u baru ;)
Hvala, vrlo zanimljivo, pragmatično, zanimljivo, ne nedostaje mu zamaha i dubine. Značajno naglašavajući opsesiju današnje omladine ovim zabranjenim brendom! Ali hvala na njoj, kao i na ovom članku.
Članak je potpuno pogrešan.
Aplikacija se ne zatvara kada se pritisne tipka Home, kao što je pogrešno navedeno, već pauzira. tj. definitivno ne briši iz memorije i ne zatvaraj. Samo pauzirajte trčanje, iOS će ovoj aplikaciji dati 0% CPU vremena. Definitivno se ne "zamjenjuje" nigdje u iDevice memoriji, kao što je navedeno u članku. To je zaista zahvaljujući činjenici da je moguće koristiti prebacivanje aplikacija.
Aplikacija se uklanja iz memorije kada telefon ima malo memorije za pokretanje drugih aplikacija sa višim prioritetom (obično druga aplikacija radi u prvom planu).
U prvom slučaju, u pravu ste, to je bila greška u prevodu. Što se tiče zamjene, ovdje ne govorimo o tome, govorimo o operativnoj memoriji, a ne o memorijskom prostoru u iOS uređaju.
slika aplikacije je pohranjena u memoriji ograničeno vrijeme dok se ponovo ne pozove naredbom (pogledajte 13,7 GB od 16 GB: 2,3 GB je rezervirano za sistem i suspendirane aplikacije)
Dakle, potrebno je razlikovati aplikacije kao što su Navigacija, Skype i slično, te aplikacije ostaju aktivne čak i u pozadini, ili se određena funkcija ne završava i nastavlja, primjerice, slati podatke o svojoj lokaciji ili informacije o lokaciji. Ili kao Vokul u pord modu slušajte i multitasking se i dalje sluša u pozadini.
Ove aplikacije troše bateriju i potrebno ih je ručno zatvoriti i ne čekati iOS. kod drugih nije potrebno, tu samo u slučaju da se aplikacija sruši.
Ne mogu se složiti sa člankom. Min. na iPad-u prve generacije (iOS 1) jasno je vidjeti imam li puno "otvorenih" aplikacija na traci za više zadataka ili samo nekoliko. iOS pokušava da očisti memoriju, ali to očigledno nije dovoljno – mala veličina RAM-a je verovatno njegova najveća slabost.
tako da dosta zavisi od sistema i hardvera koji se koristi, sasvim je logično da će biti gore na iPadu 1 sa iOS 5.0.1 nego da je na iPadu 2. generacije
Izvini druže, ovo je opis IDEALNOG načina na koji bi trebalo da radi. Nažalost, stvarnost je potpuno drugačija i vi biste to znali da koristite Apple proizvode, barem onoliko koliko ja koristim (tj. povremeno).
"Često možete čuti praznovjerje da aplikacije koje rade u pozadini u iOS-u pune operativnu memoriju",
To nije praznovjerje, to je samo činjenica. Uostalom, i sami to tvrdite u članku.
"Kao što sam već spomenuo, korisnik nikada ne mora zatvoriti aplikacije koje rade u pozadini."
GLUPOSTI. To je samo sranje, jabukova propaganda, ne ljuti se na mene.
„Ali ne morate to da radite, jer će iOS to učiniti umesto vas. Ako imate zahtjevnu aplikaciju suspendovanu u pozadini, kao što je igra koja koristi veliku količinu RAM-a, iOS će je automatski ukloniti iz memorije kada je to potrebno, a možete je ponovo pokrenuti dodirom na ikonu aplikacije.”
Nije istina. Situacija je malo drugačija. Tipičan primjer – imam zahtjevne aplikacije koje rade u pozadini, trebaju mi igre. Pokrećem pretraživač, otvaram par kartica -> treba mi više memorije. Šta će se desiti? Zahtjevne aplikacije držim u pozadini, naprotiv, SAM BROWSER PADA. Ako zahtjevne aplikacije zatvorim ručno, pretraživač radi dugo bez problema.
Ovo je praksa, a ne teorija. I iznenađen sam da, kao dugogodišnji korisnik Apple proizvoda, to još uvijek ne znate.
Hvala, ovo je jako dobro opisano i objasnjeno. Dosta si mi pomogao ;-) ♥
Za početak, nisam ni za ni protiv iOS-a, baš kao i kod Androida, ali ovdje ima nekoliko čudnih stvari, ako kao što je ovdje napisano: "rijetko se susrećeš sa padom aplikacije na iOS-u" onda se na Android aplikacije ruše oko jednom godišnje: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Da, ali slučajevi kada trebate ručno zatvoriti aplikaciju su zaista minimalni, ja sam to koristio otprilike jednom? ;-) i davanje linka na uporedni test sa Mobilemanije je sasvim besmisleno, kad budem htio čitati o reklamama koje je Google platio, pogledat ću tamo ;-) svako može uzeti bilo koji android telefon u ruke i to i on. neće raditi čisto, odnosno, sa izuzetkom Galaxy Nexusa, koji je sistem manje-više skrojen po meri. Sve u svemu, android je katastrofa
@Mek – Koristim Apple proizvode svakodnevno već nekoliko godina i to mi se nikada nije dogodilo, tako da tvoja teorija nekako ne funkcionira.
KOROV:
@redakce – Vidi se da se na sajtu stalno radi ili se nešto dešava sa njim, ali imam osećaj da ne prođe nedelju dana da sve proradi kako treba. I više ne dolazim ovdje, jer mi novi izgled ne stoji. Ja sam barem koristio mobilnu verziju na iPhoneu, ali sada uopće ne radi - kako to? Trenutno ne odgovaraju na objave u komentarima.
@SteveJSF Nažalost, stvari se ne odvijaju uvijek onako kako želimo. Što se tiče odgovora, novi SEO dodatak ih je razbio, trenutno se rješava.
WP-Touch je također ukinuo našu uslugu iz nekog razloga, pa smo odlučili da smislimo bolje rješenje od ovog dodatka. Tako da možete uskoro očekivati sljedeće vijesti :-)
Dobar članak. Što se prakse tiče, rekao bih da se slažem sa nekoliko stvari i uglavnom radi kako je navedeno, ali nažalost i dalje ima loše napisanih aplikacija koje se ne ponašaju kako treba, a onda ima slučajeva kao što je ovaj primetili neki čitaoci. Mislim da je Skype jako dobar primjer, iz prakse znam da i dalje radi u pozadini (i to je u redu i tako bi trebalo biti), ali problem je što ova aplikacija dosta troši bateriju uređaja i Ne mogu to više da vidim kako treba. Nasuprot tome, aplikacije kao što su Facebook, Badoo, itd. također još uvijek rade u pozadini, ali njihova potrošnja je gotovo neprimjetna (barem ne primjećujem). Tako da mislim da je greška u pojedinačnim aplikacijama. Da znate koje, bilo bi dovoljno da ručno isključite samo one!
Tako da je praksa da Facebook radi po potrebi, a Skype samo po potrebi.
Pa sa druge strane, ako treba da štedim bateriju i znam da moram da održim ajfon što duže "živim", isključujem i sve nepotrebno u multitaskingu, ali uglavnom nema velikog uticaja, ali po potrebi ograničavam 3G, sav mobilni internet, WiFi, lokacijske usluge, avionski režim, jačinu osvjetljenja itd. U sklopu rutine isključujem i gore navedene aplikacije u multitaskingu.
Tako da lično smatram da je članak tačan, nažalost neki programeri pobijaju ove stvari svojim aplikacijama, jer su njihove aplikacije netačne i po mom mišljenju postoje samo dva rješenja za ovo 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štaju i nadajte se da će oni nešto učiniti po tom pitanju.
Možda je besmisleno ručno onemogućavati aplikacije, ali ja to ipak radim. Takođe sam pokušao da ne isključim sistem aplikacija, pustim ih da rade (ili ih ostavim da spavaju u pozadini) i trajanje baterije je bilo mnogo manje, takođe je bilo potrebno ponovo pokrenuti iPad 2 nakon otprilike tri nedelje, sporo je reagovao. Tako da ručno gasim aplikacije, baterija traje duže, nedavno sam restartovao na Božić i radi dobro.
Inače, radim istu stvar u Mac OS X-u, samo zatvorim aplikaciju koja mi nije potrebna (CMD+Q), bolje je nego da spava u pozadini i nepotrebno troši RAM (što OS X može' ne radi vrlo dobro). Imam malo RAM-a, samo 8 GB, ali u Windows-u 7 sa 8 GB sistem nije reagovao sporo niti se menjao, u OS X-u je to prilično česta pojava (nikada nisam isključivao kompjuter, radim to i sa Mac-om, tako da vreme od mesec dana i više nije izuzetak, problem je što ponekad moram da restartujem Mac iz predostrožnosti da oslobodim RAM i "ubrzam", Windows 7 ovo ne treba).
Više me zanima kako da upropastim aplikaciju. Ono što mi se dogodilo je da je aplikacija (posebno na Geocachingu) došla u stanje u kojem je učitavala nešto sa roditeljskog servera i zaglavila se u tom stanju. Dugme Home je radilo, nakon ponovnog pokretanja vratilo se u zamrznuto stanje (gdje sam stao). Ručni izlaz (u multitasting meni, držite ikonicu i minus za zatvaranje) = aplikacija je nestala, nakon ponovnog pokretanja otvorila se u prvobitnom stanju gdje se zamrznula. Tako da sam sve zatvorio, isključio telefon, uključio ga, dvaput kliknuo HOME i eto – sve su aplikacije bile tamo kakve su bile prije nego što su zatvorene neposredno prije isključivanja. Ni ponovno pokretanje nije pomoglo - držite kući i gornji dio dok se ne zagrije. Jedina stvar koja je pomogla je uklanjanje aplikacije sa telefona, ponovno pokretanje i ponovno instaliranje na telefon. Nekako to nisam prihvatio.
Ovo upravljanje multitaskingom funkcionira i na programerima je da se izbore s tim situacijama. Za one koji su zainteresovani za detaljniji i stručniji opis cijele situacije pisaću ovdje kako je.
Aplikacija može odgovoriti na ukupno 6 stanja, a ova stanja su:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
applicationWillTerminate
applicationDidReceiveMemoryWarning
Sada ću pokušati detaljnije opisati ova stanja.
applicationWillResignActive – ovo stanje znači da će u budućnosti (za nekoliko milisekundi) aplikacija odustati kao aktivna aplikacija (tj. aplikacija u prvom planu) to se dešava na primjer kada primite poziv dok koristite aplikaciju, ali u isto vrijeme metoda stoga će se ovo stanje pokrenuti čak i prije nego što aplikacija ode u pozadinu, tako da morate uzeti u obzir ove promjene. Ova metoda je također prikladna tako da, na primjer, obustavlja sve aktivnosti koje obavlja kada dođe do dolaznog poziva i čeka do kraja poziva.
applicationDidEnterBackground - ovaj status označava da je aplikacija ušla u pozadinu, programeri bi trebali koristiti ovu metodu da suspenduju sve procese koji ne moraju nužno da se pokreću u pozadini i čiste memoriju od neiskorištenih podataka i drugih procesa, na primjer, tajmere isteka, brisanje iz slike učitane u memoriju koje neće nužno biti potrebne ili prekinuti vezu sa serverima ako nije kritično za aplikaciju da dovrši vezu u pozadini. U osnovi, ovu metodu kada se pozove u aplikaciji treba koristiti za potpuno suspendovanje aplikacije ako neki njen dio nije potreban da radi 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 uspavana aplikacija nastaviti iz pozadine i pojaviti se u prvom planu (aplikacija ulazi u prvi plan), ovu metodu bi programeri trebali koristiti za nastavak svih procesa koji su bili neaktivni dok je aplikacija bila u pozadini, treba ponovo uspostaviti veze sa serverima, resetovati tajmere, slike i podaci učitati u memoriju i drugi neophodni procesi mogu se nastaviti neposredno pre nego što korisnik ponovo vidi učitanu aplikaciju.
applicationDidBecomeActive – ovaj status ukazuje da je aplikacija upravo postala aktivna nakon što je vraćena u prvi plan, ovo je metoda koja se može koristiti za dodatna podešavanja korisničkog sučelja ili vraćanje korisničkog sučelja u prvobitno stanje, itd. ova metoda se zapravo događa kada korisnik već može da vidi na displeju, pa je potrebno iz bilansa utvrditi šta se dešava u ovoj i prethodnoj metodi. Pozivaju se jedan za drugim s razlikom od nekoliko milisekundi.
applicationWillTerminate - ovo stanje se događa nekoliko milisekundi prije nego što se aplikacija završi, odnosno prije nego što se aplikacija zapravo završi. Ili ručno iz više zadataka ili kada isključite uređaj. Ovu metodu treba koristiti za spremanje obrađenih podataka i za prekid svih aktivnosti i brisanje podataka koji više neće biti potrebni.
applicationDidReceiveMemoryWarning - a ovo je uvjet o kojem se ovdje dosta raspravlja, ako je potrebno, iOS će ukloniti aplikaciju iz memorije ako nepotrebno koristi sistemske resurse. Ne znam tačno šta iOS radi sa pozadinskim aplikacijama, ali ako mu je potrebna aplikacija za oslobađanje resursa drugim procesima, traži od njega upozorenje memorije da oslobodi resurse koje drži. Dakle, ova metoda se zove u aplikaciji, a programeri bi je trebali implementirati tako da se aplikacija odrekne memorije koju ima, sačuva obrađene i izbriše nepotrebne podatke iz memorije, a na drugi način adekvatno oslobodi memoriju. Istina je da mnogi programeri, na primjer početnici, ne razmišljaju o takvim stvarima ili ih ne razumiju, pa se onda može dogoditi da njihova aplikacija ugrozi trajanje baterije i/ili nepotrebno troše sistemske resurse čak i u pozadini. Ne znam kako će se iOS ponašati ako aplikacija ne radi ništa nakon što primi memorijsko upozorenje i nastavi da troši sistemske resurse kao i prije.
Ovih nekoliko stanja i pridruženih metoda stoje iza čitavog "multitaskinga" u iOS-u... to je sjajan sistem ako programeri ne zanemaruju potrebu da budu odgovorni o tome šta će aplikacije izbaciti na uređaje njihovih korisnika ako se minimiziraju ili dobijate upozorenja od sistema i još mnogo toga…
Nadam se da će vam ovaj kratki opis pomoći da shvatite kako je aplikacija uključena u to da sve radi glatko. Dakle, gotovo je moguće reći da se radi o grešci nepravilne upotrebe od strane korisnika, što se može shvatiti kao - ako koristite uglavnom besplatne aplikacije amaterskih programera u velikom broju, vaš iOS uređaj će raditi lošije nego ako koristite veliku broj besplatnih i plaćenih aplikacija iskusnih ili profesionalnih programera. To ne znači da nema izuzetaka u oba kruga. Na primjer, foursquare se ponaša prilično čudno i zahtjevno, a istovremeno bi se očekivalo da su vrlo vješti programeri koji dosta vremena posvećuju memoriji i upravljanju baterijom, ali je suprotno. Najveći problem kod 4SQ-a je komunikacija sa serverima, koja često visi i preopterećena je. Ovo je samo primjer da čak i poznate aplikacije imaju problema, što ne mijenja činjenicu da je 4SQ odličan servis.
Zabavite se jabuke!! :)
Podatke smo dodali u članak uz ljubaznu dozvolu autora ;-)
Izvinjavam se, ENTER je bio svuda između pasusa, mogli bi da urade nešto po tom pitanju da komentari imaju bar malo FORMATIRANJA BOGAĆEG TEKSTA.
ArnieX: hvala na komentaru!!
Taj Faramir: Samo o tvom problemu, ne znam da li će to pomoći u tvom slučaju, ali znam iz vlastitog iskustva da ako zatvoriš aplikaciju (u multitaskingu) treba par sekundi dok se ne zatvori, pa ako ako ga isključite, preporučujem da pričekate nekoliko sekundi (ja čekam oko 10 sekundi da budem siguran) dok se definitivno ne završi i tek onda ponovo počnem.
Nema na čemu ;) Rado ću pomoći ako budem u prilici da doprinesem.
Kako bi trebalo da bude sa Meebom, kada se preko njega prijavim na ICQ ili FB chat, on se automatski odjavi nakon 10 minuta i odem van mreže ili nastavlja da radi? hvala na objasnjenju :P
Nakon deset minuta, veza aplikacije sa internetom se jednostavno prekida. Međutim, i dalje ćete biti na mreži na Meeba serveru i dobit ćete push obavještenje ako vam neko piše. Nakon ponovnog otvaranja aplikacije, veza će se uspostaviti za trenutak i možete nastaviti sa zadovoljstvom razgovarati.
Dakle, ako sam dobro shvatio članak koji ste povezali, statistika se odnosi samo na rušenja aplikacija kada se počnu, što je prilično mali postotak slučajeva u kojima može doći do pada. Stoga je nemoguće zaključiti iz ovog "istraživanja" da je iOS po mom mišljenju manje stabilan. Nadalje, prevodilac članka preuzetog iz Forbesa zaboravio je napomenuti da kompaniju koja daje podatke o padu aplikacija podržava, između ostalih, i Google („Crittercism, iza kojeg stoji Google Ventures,...“).