Še vedno je veliko ljudi, ki ne vedo, kako deluje večopravilnost v sistemu iOS. Za začetek pa je treba poudariti, da ne gre za pravo večopravilnost, temveč za zelo pametno rešitev, ki ne obremenjuje ne sistema ne uporabnika.
Pogosto je mogoče slišati vraževerje, da aplikacije, ki se v iOS-u izvajajo v ozadju, polnijo delovni pomnilnik, kar vodi do upočasnitve delovanja sistema in krajše življenjske dobe baterije, zato naj bi jih uporabnik ročno izklopil. Večopravilna vrstica dejansko ne vsebuje seznama vseh zagnanih procesov v ozadju, temveč samo nazadnje zagnane aplikacije. Tako uporabniku ni treba skrbeti za procese, ki tečejo v ozadju, razen v nekaj primerih. Ko pritisnete gumb Domov, aplikacija običajno preide v stanje spanja ali se zapre, tako da ne obremenjuje več procesorja ali baterije in po potrebi sprosti potreben pomnilnik.
To torej ni popolna večopravilnost, ko imate na desetine zagnanih procesov, v ospredju vedno deluje samo ena aplikacija, ki se po potrebi začasno ustavi ali popolnoma izklopi. V ozadju teče le nekaj sekundarnih procesov. Zato boste na iOS-u le redko naleteli na sesutje aplikacije, Android je na primer prenatrpan z delujočimi aplikacijami, za katere mora skrbeti uporabnik. To po eni strani naredi delo z napravo neprijetno, po drugi strani pa povzroči na primer počasen zagon in prehode med aplikacijami.
Vrsta izvajalnega okolja aplikacije
Aplikacija v vaši napravi iOS je v enem od teh 5 stanj:
- Teče: aplikacija se zažene in deluje v ospredju
- Ozadje: še vedno deluje, vendar deluje v ozadju (uporabljamo lahko druge aplikacije)
- Začasno ustavljeno: Še vedno uporablja RAM, vendar ne deluje
- Neaktiven: aplikacija se izvaja, vendar posredni ukazi (na primer, ko zaklenete napravo z zagnano aplikacijo)
- Ne teče: Aplikacija se je končala ali se ni začela
Zmeda nastane, ko gre aplikacija v ozadje, da ne moti. Ko pritisnete gumb Domov ali s potezo zaprete aplikacijo (iPad), gre aplikacija v ozadje. Večina aplikacij je začasno ustavljenih v nekaj sekundah (shranjene so v RAM-u naprave iDevice, tako da jih je mogoče hitro zagnati, ne obremenjujejo toliko procesorja in tako prihranijo življenjsko dobo baterije) Morda mislite, da če aplikacija še naprej uporablja pomnilnik, imate da ga ročno izbrišete, da ga sprostite. Vendar vam tega ni treba storiti, saj bo iOS to naredil namesto vas. Če imate v ozadju začasno ustavljeno zahtevno aplikacijo, na primer igro, ki uporablja veliko RAM-a, jo bo iOS po potrebi samodejno odstranil iz pomnilnika in jo lahko znova zaženete tako, da tapnete ikono aplikacije.
Nobeno od teh stanj se ne odraža v večopravilni vrstici, plošča prikazuje samo seznam nedavno zagnanih aplikacij, ne glede na to, ali je aplikacija zaustavljena, zaustavljena ali teče v ozadju. Morda boste tudi opazili, da se aplikacija, ki se trenutno izvaja, ne prikaže na plošči Večopravilnost
Naloge v ozadju
Običajno, ko pritisnete gumb Domov, bo aplikacija delovala v ozadju, in če je ne uporabljate, se bo samodejno ustavila v petih sekundah. Torej, če na primer prenašate podcast, ga sistem oceni kot delujočo aplikacijo in odloži prekinitev za deset minut. Najkasneje po desetih minutah se postopek sprosti iz spomina. Skratka, ni vam treba skrbeti, da bi prekinili prenos s pritiskom na gumb Domov, če za dokončanje ne potrebujete več kot 10 minut.
Neomejeno delovanje v ozadju
V primeru neaktivnosti sistem prekine aplikacijo v petih sekundah, v primeru prenosov pa se prekinitev zamakne za deset minut. Vendar pa obstaja majhno število aplikacij, ki zahtevajo delovanje v ozadju. Tu je nekaj primerov aplikacij, ki lahko v sistemu iOS 5 delujejo v ozadju za nedoločen čas:
- Aplikacije, ki predvajajo zvok in jih je treba za nekaj časa prekiniti (zaustavitev glasbe med telefonskim klicem itd.),
- Aplikacije, ki sledijo vaši lokaciji (navigacijska programska oprema),
- Aplikacije, ki sprejemajo klice VoIP, če na primer uporabljate Skype, lahko sprejmete klic tudi, ko je aplikacija v ozadju,
- Samodejni prenosi (npr. Kiosk).
Vse aplikacije je treba zapreti, če ne opravljajo več naloge (kot so prenosi v ozadju). Vendar pa obstajajo izjeme, ki neprekinjeno delujejo v ozadju, na primer domača aplikacija Mail. Če delujejo v ozadju, zavzamejo pomnilnik, CPE ali zmanjšajo življenjsko dobo baterije
Aplikacije, ki jim je dovoljeno, da delujejo v ozadju za nedoločen čas, lahko počnejo vse, kar počnejo, medtem ko tečejo, od predvajanja glasbe do prenosa novih epizod Podcasta.
Kot sem že omenil, uporabniku nikoli ni treba zapreti aplikacij, ki se izvajajo v ozadju. Edina izjema pri tem je, ko se aplikacija, ki teče v ozadju, zruši ali se ne prebudi pravilno iz spanja. Uporabnik lahko nato aplikacije ročno zapre v večopravilni vrstici, a se to redko zgodi.
Torej vam na splošno ni treba upravljati procesov v ozadju, ker bo sistem zanje poskrbel sam. Zato je iOS tako svež in hiter sistem.
Z vidika razvijalca
Aplikacija se lahko odzove s skupno šestimi različnimi stanji kot del večopravilnosti:
1. aplikacija se bo odpovedalaaktivna
V prevodu to stanje pomeni, da bo aplikacija v prihodnje odstopila kot aktivna aplikacija (torej aplikacija v ospredju) (v nekaj milisekundah). To se zgodi na primer ob prejemu klica med uporabo aplikacije, hkrati pa ta metoda povzroči to stanje tudi preden gre aplikacija v ozadje, zato morate te spremembe upoštevati. Ta način je primeren tudi zato, da na primer ob dohodnem klicu prekine vse dejavnosti, ki jih izvaja, in počaka do konca klica.
2. aplikacijaDidEnterBackground
Stanje pomeni, da je aplikacija prešla v ozadje. Razvijalci bi morali uporabiti to metodo za prekinitev vseh procesov, za katere ni nujno, da se izvajajo v ozadju, in čiščenje pomnilnika neuporabljenih podatkov in drugih procesov, kot so časovniki, ki potečejo, brisanje naloženih slik iz pomnilnika, ki ne bodo nujno potrebne, ali zapiranje povezave s strežniki, razen če je kritično, da aplikacija vzpostavi povezave v ozadju. Ko je metoda priklicana v aplikaciji, jo je treba v bistvu uporabiti za popolno prekinitev aplikacije, če njen del ni potreben za izvajanje v ozadju.
3. aplikacijaWillEnterForeground
To stanje je nasprotje prvega stanja, kjer bo aplikacija prešla v aktivno stanje. Stanje preprosto pomeni, da se bo aplikacija za spanje nadaljevala iz ozadja in se pojavila v ospredju v naslednjih nekaj milisekundah. razvijalci bi morali uporabiti to metodo za nadaljevanje vseh procesov, ki so bili neaktivni, ko je bila aplikacija v ozadju. Povezave s strežniki je treba znova vzpostaviti, časovnike ponastaviti, slike in podatke naložiti v pomnilnik, druge potrebne procese pa je treba nadaljevati, tik preden uporabnik znova vidi naloženo aplikacijo.
4. aplikacija je postala aktivna
Stanje označuje, da je aplikacija pravkar postala aktivna, potem ko je bila vrnjena v ospredje. To je način, s katerim lahko naredimo dodatne prilagoditve uporabniškega vmesnika ali vrnemo uporabniški vmesnik v prvotno stanje ipd. To se dejansko zgodi v trenutku, ko uporabnik že vidi aplikacijo na zaslonu, zato je potrebno previdno določite, kaj se zgodi v metodi te in prejšnje metode. Pokličejo se drug za drugim z razliko nekaj milisekund.
5. ApplicationWillTerminate
To stanje se zgodi nekaj milisekund pred izstopom iz aplikacije, torej preden se aplikacija dejansko zaključi. Bodisi ročno iz večopravilnosti bodisi ob izklopu naprave. Metodo je treba uporabiti za shranjevanje obdelanih podatkov, za zaključek vseh aktivnosti in za izbris podatkov, ki ne bodo več potrebni.
6. applicationDidReceiveMemoryWarning
O zadnji državi se največ razpravlja. Po potrebi je odgovoren za odstranitev aplikacije iz pomnilnika iOS, če ta po nepotrebnem uporablja sistemske vire. Ne vem natančno, kaj iOS počne z aplikacijami v ozadju, toda če potrebuje aplikacijo za sprostitev virov drugim procesom, jo z opozorilom o pomnilniku pozove, naj sprosti vse vire, ki jih ima. Tako se ta metoda kliče v aplikaciji. Razvijalci naj bi to implementirali tako, da se aplikacija odpove dodeljenemu pomnilniku, shrani vse, kar je v teku, počisti nepotrebne podatke iz pomnilnika in sicer ustrezno sprosti pomnilnik. Res pa je, da marsikateri razvijalec, tudi začetnik, o takšnih stvareh ne pomisli in ne razume in potem se zna zgoditi, da njihova aplikacija celo v ozadju ogrozi življenjsko dobo baterije in/ali po nepotrebnem porablja sistemske vire.
Sodba
Teh šest stanj in z njimi povezane metode so ozadje vse "večopravilnosti" v iOS-u. to je odličen sistem, če razvijalci ne zanemarijo dejstva, da je treba biti odgovoren za to, kaj aplikacija vrže v naprave njihovih uporabnikov, če so minimizirane ali prejemajo opozorila sistema itd.
Vir: Macworld.com
Avtorji: Jakub Požárek, Martin Doubek (ArnieX)
Imate tudi vi težavo za rešitev? Potrebujete nasvet ali morda najdete pravo aplikacijo? Ne oklevajte in nas kontaktirajte preko obrazca v razdelku Svetovanje, naslednjič bomo odgovorili na vaše vprašanje.
Pozdravljeni, res kul članek, vendar me zanima, ali imate kakšno tehnično podporo zanj. Ker sem baterijo večkrat reševal zvečer pred spanjem in se je zgodilo, da je z izklopljenim wifijem in mobilnimi podatki trajalo več kot v drugem primeru z izklopljenim wifijem in samo 3G.
Na žalost je izkušnja takšna, da je treba v iOS-u aplikacije ročno izklopiti in sistem ne deluje več tako dobro kot prej.
iPhone sem zamenjal za Windows Phone (Samsung Omnia W za 6200,-) in hitrost sistema je na čisto drugem nivoju.
Bojim se, da bom, ko pridejo tablice Windows 8 Metro, zamenjal tudi iPad...
@007 – ja, če primerjaš stare iPhone3G z novimi WP, potem ja (kdo bi to pričakoval?) bo WP precej hitrejši. Sicer pa ti trač o Karlulki ne gre najbolje od rok in je bilo primerno primerjati sedanji HW. Kupil sem tudi WP7 in na koncu dobil 4s, ki predstavlja čisto drugo raven uporabnosti kot WP7. Zato se prijetno premikajte in se neskončno pomikajte po ploščicah.
Se popolnoma strinjam s Pajo
Spet prispeval iz razbitin drugega soda – samsung galaxy s iphone 4 – bi rekel po starosti primerljivi? Apple je v času iOS 4, po uporabnosti in hitrosti kje drugje kot pri Androidu, zelo dobro rešil koncept dela z aplikacijami, pri Androidu pa ni več tako. Na koncu sem vseeno končal s 4S in nimam nobenih pripomb, ker "samo dela" .. in deluje zelo hitro!
Teorija je lepa... V praksi pa vseeno zaprem aplikacijo v baru ;)
Hvala, zelo zanimivo, pragmatično, zanimivo, ne manjka mu zamaha in globine. Pomemben poudarek obsedenosti današnje mladine s to prepovedano znamko! Ampak hvala zanjo, pa tudi za ta članek.
Članek je popolnoma napačen.
Aplikacija se ne zapre, ko pritisnete gumb Domov, kot je napačno navedeno, ampak se začasno ustavi. tj. vsekakor ne briši iz spomina in ne odnehaj. Preprosto zaustavite izvajanje, iOS bo tej aplikaciji dal 0 % procesorskega časa. Vsekakor se ne "zamenjuje" nikjer v pomnilniku iDevice, kot je navedeno v članku. Prav zahvaljujoč dejstvu, da je mogoče uporabljati preklapljanje med aplikacijami.
Aplikacija se odstrani iz pomnilnika, ko ima telefon malo pomnilnika za zagon drugih aplikacij z višjo prioriteto (običajno se v ospredju izvaja druga aplikacija).
V prvem primeru imate prav, šlo je za napako pri prevodu. Glede menjave pa tukaj ne govorimo o tem, govorimo o operativnem pomnilniku, ne o prostoru za shranjevanje v iOS napravi.
slika aplikacije je shranjena v pomnilniku za omejen čas, dokler je znova ne prikliče ukaz (glejte 13,7 GB od 16 GB: 2,3 GB je rezerviranih za sistem in začasno ustavljene aplikacije)
Tako je treba razlikovati med aplikacijami, kot so Navigacija, Skype in podobno, te aplikacije ostanejo aktivne tudi v ozadju ali pa se določena funkcija ne zaključi in še naprej na primer pošilja podatke o svoji lokaciji ali podatke o lokaciji. Ali kot Vokul v načinu pord poslušanje in večopravilnost še vedno posluša v ozadju.
Te aplikacije praznijo baterijo in jih je treba ročno zapreti in ne čakati na iOS. pri drugih ni potrebno, tam samo v primeru, da se aplikacija sesuje.
Ne morem se strinjati s člankom. Min. na iPadu prve generacije (iOS 1) je jasno videti, ali imam v večopravilni vrstici veliko "odprtih" aplikacij ali le nekaj. iOS sicer poskuša očistiti pomnilnik, a očitno ni dovolj - majhnost RAM-a je verjetno njegova največja slabost.
tako da je veliko odvisno od sistema in uporabljene strojne opreme, je čisto logično, da bo na iPadu 1 z iOS 5.0.1 slabše, kot če bi bilo na iPadu 2. generacije
Oprosti kolega, to je opis IDEALNEGA načina, kako bi moralo delovati. Žal je realnost popolnoma drugačna in to bi vedeli, če bi uporabljali Applove izdelke, vsaj toliko kot jaz (torej občasno).
"Pogosto lahko slišite vraževerje, da aplikacije, ki tečejo v ozadju v sistemu iOS, zapolnijo operativni pomnilnik,"
To ni vraževerje, to je samo dejstvo. Konec koncev to trdite sami v članku.
"Kot sem že omenil, uporabniku nikoli ni treba zapreti aplikacij, ki se izvajajo v ozadju."
NESMISEL. To je samo sranje, jabolčna propaganda, ne jezi se name.
»Ampak tega vam ni treba storiti, ker bo iOS to naredil namesto vas. Če imate v ozadju začasno ustavljeno zahtevno aplikacijo, na primer igro, ki uporablja veliko RAM-a, jo bo iOS po potrebi samodejno odstranil iz pomnilnika in jo lahko znova zaženete tako, da tapnete ikono aplikacije.«
Ni res. Situacija je malo drugačna. Tipičen primer – v ozadju tečejo zahtevne aplikacije, rabim igre. Zaženem brskalnik, odprem nekaj zavihkov -> potrebujem več pomnilnika. Kaj se bo zgodilo? Zahtevne aplikacije držim v ozadju, nasprotno, BRSKALNIK SAM PADE. Če zahtevne aplikacije zaprem ročno, brskalnik deluje dolgo časa brez težav.
To je praksa, ne teorija. In presenečen sem, da kot dolgoletni uporabnik Applovega izdelka tega še vedno ne veš.
Hvala, to je zelo dobro opisano in razloženo. Zelo ste mi pomagali ;-) ♥
Samo za uvod, nisem niti za niti proti iOS-u, tako kot pri Androidu, vendar je tukaj nekaj čudnih stvari, če kot je tukaj napisano: "pri iOS-u redko naletiš na sesutje aplikacije", potem pri Androidu, aplikacije se verjetno sesujejo enkrat letno: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Ja, ampak primerov, ko je treba aplikacijo zapreti ročno, je res minimalno, sem jo uporabil približno enkrat? ;-) in dajanje linka na primerjalni test od Mobilemania je čisto nesmiselno, ko bom hotel brati o oglaševanju, ki ga je Google plačal, bom pogledal tja ;-) vsak lahko dobi kateri koli android telefon v roke in ga ne bo deloval čisto, to je z izjemo Galaxy Nexusa, kjer je sistem bolj ali manj narejen po meri. Na splošno je android katastrofa
@Mek – Apple izdelke dnevno uporabljam že več let in to se mi še nikoli ni zgodilo, tako da tvoja teorija nekako ne drži.
TRAVA:
@redakce – Vidi se, da se spletna stran nenehno dela ali se nekaj dogaja, vendar imam občutek, da ne mine en teden, da vse deluje kot mora. In res ne pridem več sem, ker mi nov videz ne paše. Vsaj mobilno verzijo sem uporabljal na iPhonu, zdaj pa sploh ne dela - kako to? Trenutno ne odgovarjajo na objave v komentarjih.
@SteveJSF Na žalost se stvari ne izidejo vedno tako, kot bi si želeli. Kar se tiče odgovorov, jih je pokvaril nov vtičnik SEO, trenutno se rešuje.
Tudi WP-Touch je iz nekega razloga prekinil našo storitev, zato smo se odločili, da pripravimo boljšo rešitev od tega vtičnika. Tako se lahko kmalu veselite naslednjih novic :-)
Lep članek. Kar se tiče prakse, bi rad rekel, da se strinjam z več stvarmi in večinoma deluje kot je navedeno, žal pa se še vedno najdejo slabo napisane aplikacije, ki se ne obnašajo pravilno, pa še primeri, kot je ta opazili nekateri bralci. Mislim, da je Skype zelo dober primer, iz prakse vem, da še vedno teče v ozadju (in to je v redu in tako mora biti), vendar je problem v tem, da ta aplikacija zelo prazni baterijo naprave in Ne vidim več pravilno. Nasprotno pa aplikacije, kot so Facebook, Badoo itd. tudi še tečejo v ozadju, vendar je njihova poraba skoraj neopazna (vsaj jaz je ne opazim). Zato mislim, da je napaka v posameznih aplikacijah. Če bi vedeli, katere, bi bilo dovolj, da ročno izklopite samo te!
Praksa je torej, da Facebook deluje po potrebi, Skype pa samo po potrebi.
No, po drugi strani pa, če moram varčevati z baterijo in vem, da moram imeti iPhone čim dlje "pri življenju", tudi pri večopravilnosti izklopim vse nepotrebno, ampak večinoma nima velikega vpliva, po potrebi pa omejim 3G, ves mobilni internet, WiFi, lokacijske storitve, letalski način, moč osvetlitve itd. Kot del rutine izklopim tudi omenjene aplikacije pri večopravilnosti.
Torej osebno menim, da je članek resničen, na žalost nekateri programerji te stvari zavračajo s svojimi aplikacijami, ker so njihove aplikacije nepravilne in po mojem mnenju obstajata samo dve rešitvi za to 1. Če je možno, da aplikacije ne uporabljate in poiščete alternativa, če je možno, ali 2. Če ni mogoče, si oglejte npr. Skype, napišite to danemu programerju v poročilu in upajte, da bodo kaj naredili glede tega.
Morda je nesmiselno ročno onemogočati aplikacije, vendar to vseeno počnem. Poskušal sem tudi ne izklopiti aplikacijskega sistema, pustiti jih delovati (ali jih pustiti spati v ozadju) in življenjska doba baterije je bila precej nižja, prav tako sem moral znova zagnati iPad 2 po približno treh tednih, odzival se je počasi. Zato aplikacije izklopim ročno, baterija zdrži dlje, trenutno sem znova zagnal zadnji božični dan in deluje dobro.
Mimogrede, isto stvar naredim v Mac OS X, samo zaprem aplikacijo, ki je ne potrebujem (CMD+Q), bolje je, kot da spi v ozadju in po nepotrebnem žre RAM (kar OS X lahko ne deluje zelo dobro). Imam malo RAM-a, samo 8 GB, vendar se v Windows 7 z 8 GB sistem ni odzival počasi ali menjal, v OS X je to dokaj pogost pojav (nikoli nisem ugasnil računalnika, tudi z Mac-om, torej mesec in več časa delovanja ni izjema, težava je v tem, da moram včasih znova zagnati Mac iz previdnosti, da sprostim RAM in "pospešim", Windows 7 tega ne potrebuje).
Bolj me zanima, kako dejansko razstreliti aplikacijo. Zgodilo se mi je, da je aplikacija (natančneje na Geocachingu) prišla v stanje, ko je nalagala nekaj iz nadrejenega strežnika, in se v tem stanju zataknila. Gumb Domov je deloval, po ponovnem zagonu se je vrnil v zamrznjeno stanje (kjer sem končal). Ročni izhod (v multitasting meni, drži ikono in minus za zapiranje) = aplikacija je izginila, po ponovnem zagonu se je odprla v prvotnem stanju, kjer je zmrznila. Tako sem vse zaprl, ugasnil telefon, ga prižgal, dvokliknil DOMOV in glej ga zlomka – aplikacije so bile vse tam, kot so bile pred zapiranjem, tik pred izklopom. Tudi ponovni zagon ni pomagal - drži doma in zgoraj, dokler se ne segreje. Pomagalo je le to, da sem odstranil aplikacijo iz telefona, jo znova zagnal in ponovno namestil na telefon. Nekako je nisem vzel.
To večopravilno upravljanje deluje in na razvijalcih je, da se spopadejo s temi situacijami. Za tiste, ki jih zanima bolj podroben in strokoven opis celotne situacije, bom tukaj napisal kako je.
Aplikacija se lahko odzove na skupno 6 stanj in ta stanja so:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
applicationWillTerminate
applicationDidReceiveMemoryWarning
Zdaj bom poskušal podrobneje opisati ta stanja.
applicationWillResignActive – to stanje pomeni, da se bo aplikacija v prihodnosti (v nekaj milisekundah) odpovedala kot aktivna aplikacija (tj. aplikacija v ospredju) to se zgodi na primer ob prejemu klica med uporabo aplikacije, hkrati pa to zato se bo to stanje sprožilo, še preden bo aplikacija prešla v ozadje, zato morate te spremembe upoštevati. Ta način je primeren tudi zato, da na primer ob dohodnem klicu prekine vse dejavnosti, ki jih izvaja, in počaka do konca klica.
applicationDidEnterBackground - to stanje označuje, da je aplikacija vstopila v ozadje, razvijalci bi morali uporabiti to metodo za prekinitev vseh procesov, za katere ni nujno, da se izvajajo v ozadju, in čiščenje pomnilnika neuporabljenih podatkov in drugih procesov, na primer časovniki poteka, brisanje iz slike, naložene v pomnilnik, ki ne bodo nujno potrebne ali prekinejo povezavo s strežniki, če za aplikacijo ni kritično, da vzpostavi povezavo v ozadju. V bistvu je treba to metodo, ko jo pokličete v aplikaciji, uporabiti za popolno prekinitev aplikacije, če njen del ni potreben za izvajanje v ozadju.
applicationWillEnterForeground – to stanje je nasprotje prvega stanja, ko bo aplikacija prešla v aktivno stanje. To stanje aplikacije preprosto pomeni, da se bo v naslednjih nekaj milisekundah aplikacija v stanju pripravljenosti nadaljevala iz ozadja in se prikazala v ospredju (aplikacija vstopi v ospredje). To metodo morajo razvijalci uporabiti za nadaljevanje vseh procesov, ki so bili neaktivni, medtem ko je bila aplikacija v ozadju je treba znova vzpostaviti povezave s strežniki, ponastaviti časovnike, naložiti slike in podatke v pomnilnik, druge potrebne procese pa je mogoče nadaljevati, tik preden uporabnik znova vidi naloženo aplikacijo.
applicationDidBecomeActive – ta status označuje, da je aplikacija pravkar postala aktivna po obnovitvi v ospredje, to je metoda, ki jo je mogoče uporabiti za dodatne prilagoditve uporabniškega vmesnika ali povrnitev uporabniškega vmesnika v prvotno stanje itd. ta metoda se dejansko zgodi ko uporabnik že vidi na prikazovalniku, zato je treba iz bilance stanja ugotoviti, kaj se dogaja pri tej metodi in pri prejšnji metodi. Pokličejo se drug za drugim z razliko nekaj milisekund.
applicationWillTerminate - to stanje se zgodi nekaj milisekund pred zaključkom aplikacije, torej preden se aplikacija dejansko zaključi. Bodisi ročno iz večopravilnosti bodisi ob izklopu naprave. To metodo je treba uporabiti za shranjevanje obdelanih podatkov in za zaključek vseh dejavnosti ter brisanje podatkov, ki ne bodo več potrebni.
applicationDidReceiveMemoryWarning - in to je pogoj, o katerem se tukaj veliko razpravlja, če bo potrebno, bo iOS odstranil aplikacijo iz pomnilnika, če po nepotrebnem uporablja sistemske vire. Ne vem točno, kaj iOS počne z aplikacijami v ozadju, toda če potrebuje aplikacijo za sprostitev virov drugim procesom, jo z opozorilom o pomnilniku pozove, naj sprosti vire, ki jih ima. Ta metoda se torej kliče v aplikaciji, razvijalci pa naj bi jo implementirali tako, da aplikacija odda pomnilnik, ki ga ima, shrani obdelane in iz pomnilnika izbriše nepotrebne podatke, sicer pa pomnilnik ustrezno sprosti. Res pa je, da marsikateri razvijalec, na primer začetnik, o takšnih stvareh ne razmišlja ali jih ne razume in takrat se lahko zgodi, da njihova aplikacija ogroža življenjsko dobo baterije in/ali po nepotrebnem porablja sistemske vire tudi v ozadju. Ne vem, kako se bo iOS obnašal, če aplikacija po prejemu opozorila o pomnilniku ne naredi ničesar in še naprej porablja sistemske vire kot prej.
Teh nekaj stanj in povezanih metod je v ozadju celotne "večopravilnosti" v iOS-u ... to je odličen sistem, če razvijalci ne zanemarijo potrebe po prevzemanju odgovornosti glede tega, kaj bodo aplikacije sprožile v napravah njihovih uporabnikov, če bodo pomanjšane ali prejmite opozorila sistema in več ...
Upam, da vam bo ta kratek opis pomagal razumeti, kako je aplikacija vključena v to, da vse deluje gladko. Tako da je skoraj mogoče trditi, da gre za napako nepravilne uporabe s strani uporabnika, kar lahko razumemo kot - če boste v velikem številu uporabljali večinoma brezplačne aplikacije amaterskih razvijalcev, bo vaša iOS naprava delovala slabše kot če boste uporabljali veliko število brezplačnih in plačljivih aplikacij izkušenih ali profesionalnih razvijalcev. To ne pomeni, da v obeh krogih ni izjem. Foursquare se na primer obnaša precej nenavadno in zahtevno, ob tem pa bi že pričakovali, da gre za zelo spretne razvijalce, ki veliko časa namenijo upravljanju s pomnilnikom in baterijo, a je ravno nasprotno. Največja težava 4SQ je komunikacija s strežniki, ki pogosto visi in je preobremenjena. To je samo primer dejstva, da imajo težave tudi znane aplikacije, kar pa ne spremeni dejstva, da je 4SQ odlična storitev.
Zabavajte se Jabolka!! :)
Podatke smo v članek dodali s prijaznim dovoljenjem avtorja ;-)
Oprostite, ENTER je bil povsod med odstavki, tukaj bi lahko nekaj naredili, da bi imeli komentarji vsaj malo RICH TEXT FORMATING.
ArnieX: hvala za komentar!!
Tisti Faramir: Jaz sem samo o tvoji težavi, ne vem, če bo pomagalo v tvojem primeru, ampak iz lastnih izkušenj vem, da če zapreš aplikacijo (v večopravilnosti), traja nekaj sekund, da se zapre, torej če ga izklopiš. Priporočam, da počakaš nekaj sekund (jaz počakam cca. 10 sekund, da se prepričam), da je zagotovo končano in šele nato ga ponovno zaženem.
Vabljeni ;) Z veseljem bom pomagal, če bom imel možnost prispevati.
Kako naj bi bilo z Meebom, ko se preko njega prijavim na ICQ ali FB chat, se po 10 minutah avtomatsko odjavi in grem offline ali dela naprej? hvala za pojasnilo :P
Po desetih minutah se povezava aplikacije z internetom preprosto prekine. Vendar boste še vedno povezani na strežnik Meeba in prejeli boste potisno obvestilo, če vam bo kdo pisal. Po ponovnem odpiranju aplikacije bo povezava v trenutku vzpostavljena in lahko nadaljujete veselo klepetanje.
Torej, če sem pravilno razumel članek, ki ste ga povezali, se statistika nanaša samo na zrušitve aplikacij, ko se zaženejo, kar je dokaj majhen odstotek primerov, kjer lahko pride do zrušitev. Zato je iz te "raziskave" nemogoče sklepati, da je iOS po moje manj stabilen. Poleg tega je prevajalec članka, povzetega iz Forbesa, pozabil omeniti, da podjetje, ki posreduje podatke o zrušitvah aplikacij, podpira med drugim Google (»Crittercism, which is backed by Google Ventures,...«).