Lukk annonse

Det er fortsatt mange som ikke vet hvordan multitasking fungerer i iOS. Til å begynne med er det imidlertid nødvendig å påpeke at dette ikke er ekte multitasking, men en veldig smart løsning som ikke belaster systemet eller brukeren.

Man kan ofte høre overtro på at apper som kjører i bakgrunnen i iOS fyller opp driftsminnet, noe som fører til systemnedgang og batterilevetid, så brukeren bør slå dem av manuelt. Multitasking-linjen inneholder faktisk ikke en liste over alle kjørende bakgrunnsprosesser, men bare de sist lanserte applikasjonene. Så brukeren trenger ikke å bekymre seg for prosesser som kjører i bakgrunnen bortsett fra i noen få tilfeller. Når du trykker på Hjem-knappen går applikasjonen vanligvis i dvale eller lukkes, slik at den ikke lenger laster prosessoren eller batteriet og om nødvendig frigjør nødvendig minne.

Så dette er ikke fullverdig multitasking når du har dusinvis av prosesser i gang. Bare ett program kjører alltid i forgrunnen, som settes på pause eller slås helt av om nødvendig. Bare noen få sekundære prosesser kjører i bakgrunnen. Det er derfor du sjelden vil støte på et programkrasj på iOS, for eksempel er Android overveldet med kjørende programmer som brukeren må ta seg av. På den ene siden gjør dette arbeidet med enheten ubehagelig, og på den andre siden forårsaker det for eksempel treg oppstart og overganger mellom applikasjoner.

Applikasjonskjøringstype

Applikasjonen på iOS-enheten din er i en av disse 5 tilstandene:

  • Løping: applikasjonen startes og kjører i forgrunnen
  • Bakgrunn: den kjører fortsatt, men kjører i bakgrunnen (vi kan bruke andre applikasjoner)
  • Suspendert: Bruker fortsatt RAM, men kjører ikke
  • Inaktiv: applikasjonen kjører, men indirekte kommandoer (for eksempel når du låser enheten mens applikasjonen kjører)
  • Løper ikke: Søknaden er avsluttet eller har ikke startet

Forvirringen kommer når appen går i bakgrunnen for ikke å forstyrre. Når du trykker på Hjem-knappen eller bruker bevegelsen for å lukke applikasjonen (iPad), går applikasjonen i bakgrunnen. De fleste apper suspenderes i løpet av sekunder (De lagres i iDevices RAM slik at de kan startes raskt, de belaster ikke prosessoren like mye og sparer dermed batterilevetid) Du tenker kanskje at hvis en app fortsetter å bruke minne, har du for å slette den manuelt for å frigjøre den. Men du trenger ikke å gjøre det, for iOS vil gjøre det for deg. Hvis du har en krevende applikasjon suspendert i bakgrunnen, for eksempel et spill som bruker store mengder RAM, vil iOS automatisk fjerne det fra minnet når det er nødvendig, og du kan starte det på nytt ved å trykke på applikasjonsikonet.

Ingen av disse tilstandene gjenspeiles i multitasking-linjen, panelet viser bare en liste over nylig lanserte apper uavhengig av om appen er stoppet, satt på pause eller kjører i bakgrunnen. Du kan også legge merke til at programmet som kjører for øyeblikket ikke vises i Multitasking-panelet

Bakgrunnsoppgaver

Vanligvis, når du trykker på Hjem-knappen, vil applikasjonen kjøre i bakgrunnen, og hvis du ikke bruker den, stopper den automatisk i løpet av fem sekunder. Så hvis du for eksempel laster ned en podcast, vurderer systemet den som en applikasjon som kjører og forsinker avslutningen med ti minutter. Senest etter ti minutter frigjøres prosessen fra minnet. Kort sagt, du trenger ikke å bekymre deg for å avbryte nedlastingen ved å trykke på Hjem-knappen, hvis det ikke tar mer enn 10 minutter å fullføre den.

Ubestemt kjører i bakgrunnen

Ved inaktivitet avslutter systemet applikasjonen innen fem sekunder, og ved nedlastinger blir avslutningen forsinket i ti minutter. Det er imidlertid et lite antall applikasjoner som krever kjøring i bakgrunnen. Her er noen eksempler på apper som kan kjøre i bakgrunnen på ubestemt tid i iOS 5:

  • Apper som spiller av lyd og må avbrytes en stund (stopper musikk under en telefonsamtale osv.),
  • Applikasjoner som sporer posisjonen din (navigasjonsprogramvare),
  • Programmer som mottar VoIP-anrop, for eksempel hvis du bruker Skype, kan du motta et anrop selv når programmet er i bakgrunnen,
  • Automatiske nedlastinger (f.eks. Newsstand).

Alle applikasjoner bør lukkes hvis de ikke lenger utfører en oppgave (som bakgrunnsnedlastinger). Det er imidlertid unntak som kjører i bakgrunnen kontinuerlig, for eksempel den opprinnelige Mail-appen. Hvis de kjører i bakgrunnen, tar de opp minne, CPU-bruk eller reduserer batterilevetiden

Apper som har lov til å kjøre i bakgrunnen på ubestemt tid, kan gjøre alt de gjør mens de kjører, fra å spille musikk til å laste ned nye podcast-episoder.

Som jeg nevnte før, trenger brukeren aldri å lukke appene som kjører i bakgrunnen. Det eneste unntaket fra dette er når en app som kjører i bakgrunnen krasjer eller ikke våkner fra dvale. Brukeren kan deretter lukke applikasjonene manuelt i multitasking-linjen, men dette skjer sjelden.

Så generelt trenger du ikke å administrere bakgrunnsprosesser fordi systemet vil ta seg av dem selv. Det er derfor iOS er et så ferskt og raskt system.

Fra et utviklerperspektiv

Applikasjonen kan reagere med totalt seks forskjellige tilstander som en del av multitasking:

1. applicationWillResignActive

I oversettelse betyr denne tilstanden at applikasjonen vil fratre som den aktive applikasjonen (det vil si applikasjonen i forgrunnen) i fremtiden (et spørsmål om noen få millisekunder). Dette skjer for eksempel når du mottar et anrop mens du bruker applikasjonen, men samtidig forårsaker denne metoden også denne tilstanden før applikasjonen går i bakgrunnen, så du må ta hensyn til disse endringene. Denne metoden egner seg også slik at den for eksempel stanser alle aktivitetene den utfører når det kommer en innkommende samtale og venter til samtalen er ferdig.

2. applicationDidEnterBackground

Statusen indikerer at applikasjonen har gått i bakgrunnen. Utviklere bør bruke denne metoden for å suspendere alle prosesser som ikke nødvendigvis trenger å kjøre i bakgrunnen og tømme minnet for ubrukte data og andre prosesser, for eksempel utløpende tidtakere, tømme innlastede bilder fra minnet som ikke nødvendigvis er nødvendig, eller lukking tilkoblinger med servere, med mindre det er avgjørende for applikasjonen å fullføre tilkoblinger i bakgrunnen. Når metoden påkalles i en applikasjon, bør den i hovedsak brukes til å suspendere applikasjonen fullstendig hvis en del av den ikke er nødvendig for å kjøre i bakgrunnen.

3. applicationWillEnterForeground

Denne tilstanden er det motsatte av den første tilstanden, hvor søknaden vil gå tilbake til den aktive tilstanden. Tilstanden betyr ganske enkelt at soveappen gjenopptas fra bakgrunnen og vises i forgrunnen i løpet av de neste millisekunder. utviklere bør bruke denne metoden for å gjenoppta alle prosesser som var inaktive mens applikasjonen var i bakgrunnen. Tilkoblinger til servere bør gjenopprettes, tidtakere tilbakestilles, bilder og data lastes inn i minnet, og andre nødvendige prosesser kan gjenopptas rett før brukeren ser den innlastede applikasjonen igjen.

4. ApplicationDidBecomeActive

Tilstanden indikerer at applikasjonen nettopp har blitt aktiv etter å ha blitt gjenopprettet til forgrunnen. Dette er en metode som kan brukes til å gjøre ytterligere justeringer av brukergrensesnittet eller for å gjenopprette brukergrensesnittet til dets opprinnelige tilstand osv. Dette skjer faktisk i det øyeblikket brukeren allerede ser applikasjonen på skjermen, så det er nødvendig å bestemme med forsiktighet hva som skjer i metoden for denne og i den forrige metoden. De kalles opp etter hverandre med en forskjell på noen få millisekunder.

5. applicationWillTerminate

Denne tilstanden skjer noen få millisekunder før applikasjonen avsluttes, det vil si før applikasjonen faktisk avsluttes. Enten manuelt fra multitasking eller når du slår av enheten. Metoden skal brukes til å lagre behandlede data, for å avslutte alle aktiviteter og for å slette data som ikke lenger vil være nødvendig.

6. ApplicationDidReceiveMemoryWarning

Det er den siste staten som er mest diskutert. Den er ansvarlig for om nødvendig å fjerne applikasjonen fra iOS-minnet hvis den bruker systemressurser unødvendig. Jeg vet ikke spesifikt hva iOS gjør med bakgrunnsapper, men hvis den trenger en app for å frigjøre ressurser til andre prosesser, ber den den om å frigi alle ressursene den har med en minneadvarsel. Så denne metoden kalles i applikasjonen. Utviklere bør implementere det slik at applikasjonen gir fra seg minnet den har tildelt, lagrer alt som pågår, sletter unødvendige data fra minnet og ellers frigjør minne på tilstrekkelig måte. Det er sant at mange utviklere, selv nybegynnere, ikke tenker på eller forstår slike ting, og da kan det skje at applikasjonen deres truer batterilevetiden og/eller unødvendig forbruker systemressurser, selv i bakgrunnen.

dommen

Disse seks tilstandene og deres tilknyttede metoder er bakgrunnen for all «multitasking» i iOS. det er et flott system, så lenge utviklerne ikke ser bort fra det faktum at det er behov for å være ansvarlig for hva applikasjonen kaster opp på brukernes enheter, om de minimeres eller får advarsler fra systemet og så videre.

kilde: macworld.com

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

 
Har du også et problem å løse? Trenger du råd eller kanskje finne riktig applikasjon? Ikke nøl med å kontakte oss via skjemaet i seksjonen Rådgivning, neste gang svarer vi på spørsmålet ditt.

.