Stäng annons

Det finns fortfarande många människor som inte vet hur multitasking fungerar i iOS. Till att börja med är det dock nödvändigt att poängtera att detta inte är riktig multitasking, utan en väldigt smart lösning som inte belastar systemet eller användaren.

Man kan ofta höra vidskepelse på att appar som körs i bakgrunden i iOS fyller upp driftsminnet, vilket leder till nedgång i systemet och minskad batteritid, så användaren bör stänga av dem manuellt. Multitasking-fältet innehåller faktiskt inte en lista över alla pågående bakgrundsprocesser, utan bara de senast lanserade programmen. Så användaren behöver inte oroa sig för processer som körs i bakgrunden förutom i några få fall. När du trycker på hemknappen går applikationen vanligtvis i viloläge eller stängs, så att den inte längre laddar processorn eller batteriet och frigör nödvändigt minne vid behov.

Detta är inte fullfjädrad multitasking när du har dussintals processer igång. Endast en applikation körs alltid i förgrunden, som pausas eller stängs av helt om det behövs. Endast ett fåtal sekundära processer körs i bakgrunden. Det är därför du sällan kommer att stöta på en applikationskrasch på iOS, till exempel Android är överväldigad med körande applikationer som användaren måste ta hand om. Dels gör detta arbetet med enheten obehagligt, dels orsakar det till exempel långsam uppstart och övergångar mellan applikationer.

Programkörningstyp

Applikationen på din iOS-enhet är i ett av dessa 5 tillstånd:

  • Löpning: applikationen startas och körs i förgrunden
  • Bakgrund: den körs fortfarande men körs i bakgrunden (vi kan använda andra applikationer)
  • Upphängd: Använder fortfarande RAM men körs inte
  • Inaktiv: applikationen körs men indirekta kommandon (till exempel när du låser enheten med applikationen igång)
  • Springer inte: Ansökan har avslutats eller har inte startat

Förvirringen kommer när appen går i bakgrunden för att inte störa. När du trycker på hemknappen eller använder gesten för att stänga applikationen (iPad), går applikationen till bakgrunden. De flesta appar avbryts inom några sekunder (De lagras i iDevices RAM så att de kan startas snabbt, de belastar inte processorn lika mycket och sparar därmed batteritid) Du kanske tror att om en app fortfarande använder minne har du för att manuellt ta bort det för att frigöra det. Men du behöver inte göra det, eftersom iOS kommer att göra det åt dig. Om du har en krävande applikation avstängd i bakgrunden, till exempel ett spel som använder en stor mängd RAM, kommer iOS automatiskt att ta bort det från minnet när det behövs, och du kan starta om det genom att trycka på applikationsikonen.

Inget av dessa tillstånd återspeglas i multitasking-fältet, panelen visar bara en lista över nyligen lanserade appar oavsett om appen är stoppad, pausad eller körs i bakgrunden. Du kanske också märker att programmet som körs för närvarande inte visas i panelen Multitasking

Bakgrundsuppgifter

Normalt när du trycker på hemknappen körs applikationen i bakgrunden, och om du inte använder den pausas den automatiskt inom fem sekunder. Så om du till exempel laddar ner en podcast, utvärderar systemet den som en applikation som körs och fördröjer uppsägningen med tio minuter. Senast efter tio minuter frigörs processen från minnet. Kort sagt, du behöver inte oroa dig för att avbryta din nedladdning genom att trycka på hemknappen, om det inte tar mer än 10 minuter att slutföra den.

Obestämd körning i bakgrunden

Vid inaktivitet avslutar systemet applikationen inom fem sekunder, och vid nedladdningar fördröjs avslutningen i tio minuter. Det finns dock ett litet antal applikationer som kräver körning i bakgrunden. Här är några exempel på appar som kan köras i bakgrunden på obestämd tid i iOS 5:

  • Applikationer som spelar upp ljud och måste avbrytas en stund (pausa musik under ett telefonsamtal, etc.),
  • Applikationer som spårar din plats (navigeringsprogram),
  • Applikationer som tar emot VoIP-samtal, till exempel om du använder Skype, kan du ta emot ett samtal även när applikationen är i bakgrunden,
  • Automatiska nedladdningar (t.ex. Tidningskiosk).

Alla applikationer bör stängas om de inte längre utför en uppgift (som bakgrundsnedladdningar). Det finns dock undantag som körs i bakgrunden kontinuerligt, till exempel den inbyggda Mail-appen. Om de körs i bakgrunden tar de upp minne, CPU-användning eller minskar batteritiden

Appar som får köras i bakgrunden på obestämd tid kan göra allt de gör medan de är igång, från att spela musik till att ladda ner nya Podcast-avsnitt.

Som jag nämnde tidigare behöver användaren aldrig stänga apparna som körs i bakgrunden. Det enda undantaget från detta är när en app som körs i bakgrunden kraschar eller inte vaknar ur viloläge ordentligt. Användaren kan sedan stänga applikationerna manuellt i multitasking-fältet, men detta händer sällan.

Så i allmänhet behöver du inte hantera bakgrundsprocesser eftersom systemet tar hand om dem själv. Det är därför iOS är ett så fräscht och snabbt system.

Ur ett utvecklarperspektiv

Applikationen kan reagera med totalt sex olika tillstånd som en del av multitasking:

1. applicationWillResignActive

I översättning betyder detta tillstånd att applikationen kommer att avgå som den aktiva applikationen (det vill säga applikationen i förgrunden) i framtiden (en fråga om några millisekunder). Detta händer till exempel när du tar emot ett samtal medan du använder programmet, men samtidigt orsakar denna metod även detta tillstånd innan programmet går i bakgrunden, så du måste ta hänsyn till dessa ändringar. Denna metod är också lämplig så att den till exempel avbryter alla aktiviteter som den utför när det kommer ett inkommande samtal och väntar till slutet av samtalet.

2. applicationDidEnterBackground

Statusen indikerar att applikationen har hamnat i bakgrunden. Utvecklare bör använda den här metoden för att avbryta alla processer som inte nödvändigtvis behöver köras i bakgrunden och rensa minnet från oanvända data och andra processer, t.ex. utgående timers, rensa laddade bilder från minnet som inte nödvändigtvis behövs eller stänga anslutningar med servrar, såvida det inte är avgörande för applikationen att slutföra anslutningar i bakgrunden. När metoden anropas i en applikation, bör den i huvudsak användas för att stänga av applikationen helt om någon del av den inte behöver köras i bakgrunden.

3. applicationWillEnterForeground

Detta tillstånd är motsatsen till det första tillståndet, där applikationen avgår till det aktiva tillståndet. Tillståndet betyder helt enkelt att den sovande applikationen kommer att återupplivas från bakgrunden och visas i förgrunden inom de närmaste millisekunderna. Utvecklare bör använda den här metoden för att återuppta alla processer som var inaktiva medan programmet var i bakgrunden. Anslutningar till servrar bör återupprättas, timers återställas, bilder och data laddas in i minnet och andra nödvändiga processer kan återupptas precis innan användaren ser det laddade programmet igen.

4. ansökanBlevAktiv

Tillståndet indikerar att applikationen precis har blivit aktiv efter att ha återställts till förgrunden. Detta är en metod som kan användas för att göra ytterligare justeringar av användargränssnittet eller för att återställa användargränssnittet till dess ursprungliga tillstånd etc. Detta händer faktiskt i det ögonblick då användaren redan ser applikationen på skärmen, så det är nödvändigt att bestämma med försiktighet vad som händer i metoden för denna och i den tidigare metoden. De kallas en efter en med en skillnad på några millisekunder.

5. applicationWillTerminate

Detta tillstånd inträffar några millisekunder innan programmet avslutas, det vill säga innan programmet faktiskt avslutas. Antingen manuellt från multitasking eller när du stänger av enheten. Metoden ska användas för att spara bearbetad data, för att avsluta alla aktiviteter och för att radera data som inte längre kommer att behövas.

6. applicationDidReceiveMemoryWarning

Det är det sista tillståndet som diskuteras mest. Den ansvarar för att vid behov ta bort applikationen från iOS-minnet om den använder systemresurser i onödan. Jag vet inte specifikt vad iOS gör med bakgrundsappar, men om den behöver en app för att frigöra resurser till andra processer, uppmanar den den att släppa alla resurser den har med en minnesvarning. Så denna metod kallas i applikationen. Utvecklare bör implementera det så att applikationen ger upp det minne som den har allokerat, sparar allt som pågår, rensar onödig data från minnet och i övrigt frigör minne på ett adekvat sätt. Det är sant att många utvecklare, även nybörjare, inte tänker på eller förstår sådana saker, och då kan det hända att deras applikation hotar batteritiden och/eller förbrukar systemresurser i onödan, även i bakgrunden.

dom

Dessa sex tillstånd och deras associerade metoder är bakgrunden till all "multitasking" i iOS. det är ett bra system, så länge utvecklarna inte bortser från att det finns ett behov av att ta ansvar för vad applikationen slänger upp på sina användares enheter, om de minimeras eller får varningar från systemet och så vidare.

källa: Macworld.com

Författare: Jakub Požárek, Martin Doubek (ArnieX)

 
Har du också ett problem att lösa? Behöver du råd eller kanske hitta rätt applikation? Tveka inte att kontakta oss via formuläret i avsnittet Rådgivning, nästa gång svarar vi på din fråga.

.