Zapri oglas

Š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.

.