Zatvori oglas

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.

.