Zatvori oglas

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.

.