Luk annoncen

Der er stadig mange mennesker, der ikke ved, hvordan multitasking fungerer i iOS. Til at begynde med er det dog nødvendigt at pointere, at der ikke er tale om rigtig multitasking, men en meget smart løsning, der hverken belaster systemet eller brugeren.

Man kan ofte høre overtro om, at apps, der kører i baggrunden i iOS, fylder op i driftshukommelsen, hvilket fører til systemnedgang og reduceret batterilevetid, så brugeren bør slukke dem manuelt. Multitasking-bjælken indeholder faktisk ikke en liste over alle kørende baggrundsprocesser, men kun de senest lancerede applikationer. Så brugeren behøver ikke at bekymre sig om processer, der kører i baggrunden undtagen i nogle få tilfælde. Når du trykker på Hjem-knappen, går applikationen som regel i dvale eller lukker, så den ikke længere indlæser processoren eller batteriet og om nødvendigt frigør den nødvendige hukommelse.

Så dette er ikke fuldgyldig multitasking, når du har snesevis af processer kørende. Kun én applikation kører altid i forgrunden, som er sat på pause eller slukket helt, hvis det er nødvendigt. Kun få sekundære processer kører i baggrunden. Derfor vil du sjældent støde på et programnedbrud på iOS, for eksempel er Android overvældet med kørende programmer, som brugeren skal tage sig af. Det gør på den ene side arbejdet med enheden ubehageligt, og på den anden side forårsager det for eksempel langsom opstart og overgange mellem applikationer.

Applikationskørselstype

Applikationen på din iOS-enhed er i en af ​​disse 5 tilstande:

  • Kører: applikationen startes og kører i forgrunden
  • Baggrund: det kører stadig, men kører i baggrunden (vi kan bruge andre applikationer)
  • Suspenderet: Bruger stadig RAM, men kører ikke
  • Inaktiv: applikationen kører, men indirekte kommandoer (f.eks. når du låser enheden med applikationen kørende)
  • Kører ikke: Ansøgningen er afsluttet eller er ikke startet

Forvirringen kommer, når appen går i baggrunden for ikke at forstyrre. Når du trykker på Hjem-knappen eller bruger bevægelsen til at lukke applikationen (iPad), går applikationen i baggrunden. De fleste apps suspenderes i løbet af sekunder (De er gemt i iDevicens RAM, så de kan startes hurtigt, de belaster ikke processoren så meget og sparer dermed batterilevetid) Du tror måske, at hvis en app fortsætter med at bruge hukommelse, har du for at slette det manuelt for at frigøre det. Men du behøver ikke at gøre det, for iOS vil gøre det for dig. Hvis du har en krævende applikation suspenderet i baggrunden, såsom et spil, der bruger en stor mængde RAM, vil iOS automatisk fjerne det fra hukommelsen, når det er nødvendigt, og du kan genstarte det ved at trykke på applikationsikonet.

Ingen af ​​disse tilstande afspejles i multitasking-linjen, panelet viser kun en liste over nyligt lancerede apps, uanset om appen er stoppet, sat på pause eller kører i baggrunden. Du kan også bemærke, at det program, der kører i øjeblikket, ikke vises i Multitasking-panelet

Baggrundsopgaver

Normalt, når du trykker på Hjem-knappen, kører applikationen i baggrunden, og hvis du ikke bruger den, stopper den automatisk inden for fem sekunder. Så hvis du for eksempel downloader en podcast, vurderer systemet den som en kørende applikation og forsinker afslutningen med ti minutter. Senest efter ti minutter frigives processen fra hukommelsen. Kort sagt, du behøver ikke bekymre dig om at afbryde din download ved at trykke på Hjem-knappen, hvis det ikke tager mere end 10 minutter at gennemføre det.

Ubegrænset kører i baggrunden

I tilfælde af inaktivitet afslutter systemet applikationen inden for fem sekunder, og i tilfælde af downloads forsinkes afslutningen i ti minutter. Der er dog et lille antal programmer, der kræver at køre i baggrunden. Her er nogle eksempler på apps, der kan køre i baggrunden på ubestemt tid i iOS 5:

  • Programmer, der afspiller lyd og skal afbrydes i et stykke tid (pause musik under et telefonopkald osv.),
  • Programmer, der sporer din placering (navigationssoftware),
  • Applikationer, der modtager VoIP-opkald, for eksempel hvis du bruger Skype, kan du modtage et opkald, selv når applikationen er i baggrunden,
  • Automatiske downloads (f.eks. Bladkiosk).

Alle applikationer skal lukkes, hvis de ikke længere udfører en opgave (såsom baggrundsdownloads). Der er dog undtagelser, der kører i baggrunden kontinuerligt, såsom den oprindelige Mail-app. Hvis de kører i baggrunden, optager de hukommelse, CPU-brug eller reducerer batterilevetiden

Apps, der får lov til at køre i baggrunden på ubestemt tid, kan gøre alt, hvad de gør, mens de kører, lige fra at spille musik til at downloade nye Podcast-afsnit.

Som jeg nævnte før, behøver brugeren aldrig at lukke de apps, der kører i baggrunden. Den eneste undtagelse fra dette er, når en app, der kører i baggrunden, går ned eller ikke vågner ordentligt fra dvale. Brugeren kan derefter lukke applikationerne manuelt i multitasking-bjælken, men det sker sjældent.

Så generelt behøver du ikke at administrere baggrundsprocesser, fordi systemet selv tager sig af dem. Derfor er iOS et så friskt og hurtigt system.

Fra en udviklers perspektiv

Applikationen kan reagere med i alt seks forskellige tilstande som en del af multitasking:

1. applicationWillResignActive

I oversættelse betyder denne tilstand, at applikationen vil fratræde som den aktive applikation (det vil sige applikationen i forgrunden) i fremtiden (et spørgsmål om et par millisekunder). Dette sker for eksempel, når du modtager et opkald, mens du bruger applikationen, men samtidig forårsager denne metode også denne tilstand, før applikationen går i baggrunden, så du skal tage højde for disse ændringer. Denne metode er også velegnet, så den f.eks. suspenderer alle de aktiviteter, den udfører, når der er et indgående opkald, og venter til slutningen af ​​opkaldet.

2. applicationDidEnterBackground

Status angiver, at applikationen er gået i baggrunden. Udviklere bør bruge denne metode til at suspendere alle processer, der ikke nødvendigvis behøver at køre i baggrunden og rydde hukommelsen for ubrugte data og andre processer, såsom udløbende timere, rydde indlæste billeder fra hukommelsen, der ikke nødvendigvis er nødvendige, eller lukning forbindelser med servere, medmindre det er afgørende for applikationen at fuldføre forbindelser i baggrunden. Når metoden påberåbes i en applikation, skal den i det væsentlige bruges til at suspendere applikationen fuldstændigt, hvis en del af den ikke skal køre i baggrunden.

3. applicationWillEnterForeground

Denne tilstand er det modsatte af den første tilstand, hvor ansøgningen vil gå tilbage til den aktive tilstand. Tilstanden betyder blot, at den sovende app vil genoptages fra baggrunden og vises i forgrunden inden for de næste par millisekunder. udviklere bør bruge denne metode til at genoptage alle processer, der var inaktive, mens applikationen var i baggrunden. Forbindelser til servere skal genetableres, timere nulstilles, billeder og data indlæses i hukommelsen, og andre nødvendige processer kan genoptages, lige før brugeren ser den indlæste applikation igen.

4. applicationDidBecomeActive

Tilstanden angiver, at applikationen lige er blevet aktiv efter at være blevet gendannet i forgrunden. Dette er en metode, der kan bruges til at foretage yderligere justeringer af brugergrænsefladen eller til at gendanne brugergrænsefladen til dens oprindelige tilstand osv. Dette sker faktisk i det øjeblik, hvor brugeren allerede ser applikationen på skærmen, så det er nødvendigt at bestemme med forsigtighed, hvad der sker i metoden til denne og i den foregående metode. De kaldes efter hinanden med en forskel på et par millisekunder.

5. applicationWillTerminate

Denne tilstand sker et par millisekunder før applikationen afsluttes, det vil sige før applikationen faktisk afsluttes. Enten manuelt fra multitasking eller når du slukker for enheden. Metoden skal bruges til at gemme behandlede data, til at afslutte alle aktiviteter og til at slette data, der ikke længere er nødvendige.

6. applicationDidReceiveMemoryWarning

Det er den sidste stat, der er den mest diskuterede. Den er ansvarlig for om nødvendigt at fjerne applikationen fra iOS-hukommelsen, hvis den bruger systemressourcer unødigt. Jeg ved ikke specifikt, hvad iOS gør med baggrundsapps, men hvis den har brug for en app til at frigive ressourcer til andre processer, beder den den med en hukommelsesadvarsel om at frigive de ressourcer, den har. Så denne metode kaldes i applikationen. Udviklere bør implementere det, så applikationen giver afkald på den hukommelse, den har tildelt, gemmer alt i gang, rydder unødvendige data fra hukommelsen og ellers frigør hukommelse tilstrækkeligt. Det er rigtigt, at mange udviklere, selv nybegyndere, ikke tænker over eller forstår sådanne ting, og så kan det ske, at deres applikation truer batterilevetiden og/eller unødigt bruger systemressourcer, selv i baggrunden.

Dom

Disse seks tilstande og deres tilknyttede metoder er baggrunden for al "multitasking" i iOS. det er et fantastisk system, så længe udviklere ikke ignorerer, at der er behov for at tage ansvar for, hvad applikationen kaster op på deres brugeres enheder, hvis de bliver minimeret eller får advarsler fra systemet og så videre.

kilde: Macworld.com

Forfattere: Jakub Požárek, Martin Doubek (ArnieX)

 
Har du også et problem at løse? Har du brug for rådgivning eller måske finde den rigtige applikation? Tøv ikke med at kontakte os via formularen i sektionen Rådgivning, næste gang svarer vi på dit spørgsmål.

.