Vi känner alla till lektionen "multitasking = förmågan att utföra flera processer samtidigt". Vi använder det i våra datorer utan att vara särskilt medvetna om dess närvaro. Växling mellan applikationer eller fönster i en applikation sker (för oss) i realtid och vi tar denna förmåga hos operativsystemet för given.
Uppgift annorlunda
Operativsystemet allokerar processorn till alla applikationer med små tidsintervall. Dessa tidsperioder är så små att vi inte kan märka dem, så det verkar som om alla applikationer använder processorn samtidigt. Det kanske vi tycker multitasking i iOS 4 fungerar precis likadant. Det är inte så. Den främsta anledningen är förstås batterikapaciteten. Om alla applikationer verkligen lämnades igång i bakgrunden skulle vi förmodligen behöva leta efter ett uttag om några timmar.
De flesta applikationer som är kompatibla med iOS 4 sätts i "avstängt läge" eller försätts i viloläge efter att ha tryckt på hemknappen. En analogi kan vara att stänga locket på en bärbar dator, som omedelbart går in i viloläge. Efter att ha öppnat locket vaknar den bärbara datorn och allt är i exakt samma skick som innan locket stängdes. Dessutom finns det applikationer där ett tryck på hemknappen gör att de slutar. Och då menar vi en riktig uppsägning. Utvecklare kan välja vilken av dessa metoder som ska användas.
Men det finns en annan kategori av applikationer. Det här är apparna som verkligen körs i bakgrunden, trots att du gör något helt annat på din iDevice. Skype är ett bra exempel eftersom det behöver en konstant internetuppkoppling. Andra exempel kan vara applikationer som spelar bakgrundsmusik (Pandora) eller applikationer som kräver konstant användning av GPS. Ja, dessa appar tömmer ditt batteri även när de körs i bakgrunden.
Sova eller skjuta ner?
Vissa applikationer som är kompatibla med iOS 4, som bör försättas i viloläge (sättas i "avstängt läge") efter att du tryckt på hemknappen, fortsätter att köras i bakgrunden. Apple gav utvecklarna exakt tio minuter för appen att slutföra sin uppgift, oavsett vad det var. Låt oss säga att du laddar ner en fil i GoodReader. Plötsligt vill någon ringa dig och du måste bara acceptera det där viktiga samtalet. Samtalet varade inte mer än tio minuter, du kommer tillbaka till GoodReader-applikationen. Filen kanske redan är nedladdad eller håller på att laddas ner. Vad händer om samtalet tar mer än tio minuter? Applikationen, i vårt fall GoodReader, måste stoppa sin aktivitet och berätta för iOS att den kan läggas i viloläge. Om hon inte gör det kommer hon skoningslöst att avslutas av iOS själv.
Nu vet du skillnaden mellan "mobil" och "desktop" multitasking. Även om smidighet och snabbhet att växla mellan applikationer är viktiga för en dator, är batteritiden alltid det viktigaste för mobila enheter. Multitasking måste också anpassas till detta faktum. Därför, efter att ha läst den här artikeln, om du trycker på hemknappen två gånger, kommer du inte längre att se "fältet med applikationer som körs i bakgrunden", utan i huvudsak bara "listan över nyligen använda applikationer".
Författare: Daniel Hruškakälla: onemoretap.com
hmm, intressant :) Jag har alltid trott att det alltid liknar hur det kan göras på Unix. Att applikationen har tilldelats noll CPU-tid och processen bara sitter i minnet har alla resurser allokerats. så jag var tvungen att trycka hem två gånger och omedelbart stoppa applikationen för att ta bort den. Så betyder det att även om det finns en applikationsikon i det nedre dolda arket så är appen fortfarande stängd för länge sedan (efter 10 minuter)?
I bottenlistan finns helt enkelt de senast öppnade applikationerna, där vissa av dem fortfarande kan köras, vissa är avstängda och vissa avslutas helt. Att manuellt ta bort programmet från listan har "bieffekten" att om det råkar vara igång (eller avstängs) kommer det att avslutas.
Applikationen måste berätta för sig själv om dessa 10 extra minuter, och det är inte garanterat att den kommer att få dem.
Tja, det blev inte av med min besatthet av att stänga applikationen från listan (tänk om den råkar äta upp resurser, eller hur? :-D)
Min uppfattning är att de 10 minuterna är för appar som behöver fungera i bakgrunden och inte faller inom kategorin "skype, GPS och musikuppspelning". Andra applikationer växlar till viloläge och stannar i minnet tills minnet behövs för andra saker.
Suspenderat läge har fördelen att om du sedan behöver döda appen så kommer du inte att förlora dess data, allt kommer att sparas i det ögonblick du byter till avstängd.
eller, i fallet med t.ex. uppspelning, motsvarande kommandot bg / fg
Och hur är det med spelaren eller andra applikationer som körs i bakgrunden hur länge som helst? Jag menar, får jag "välja" som utvecklare, eller måste detta godkännas av Apple på något sätt?
För att applikationen verkligen ska köras i bakgrunden under en obegränsad tid måste den göra (registrera) en av följande åtgärder:
– Använd platstjänster (GPS)
– Spela musik i bakgrunden
– Använd VOIP (Voice over IP)
Enligt rubriken (en titt under huven) förväntade jag mig att artikeln skulle innehålla en något mer omfattande förklaring med tekniska detaljer. Detta ser mer ut som en perex till artikeln. Om det är perex, när är uppföljaren? Kan du få en återbetalning? :-)
och vad skulle du vilja veta mer detaljerat?
Från en artikel med "under huven" i rubriken skulle jag förvänta mig en detaljerad teknisk beskrivning (författaren skulle kunna analysera till exempel overhead vid byte av applikation, eller hur samtidig åtkomst till systemresurser löses), en jämförelse med andra modeller (till exempel med en jailbroken iPhone). Det är idealiskt att säkerhetskopiera det med några mått. Jag förväntade mig helt enkelt mycket mer av en artikel som har "under huven" i titeln än denna mycket ytliga beskrivning.
Finns det någon icq-klient som körs kontinuerligt i bakgrunden som skype och inte släpper anslutningen?
applikationen har 10 sekunder på sig att gå in i viloläge, inte 10 minuter... och under denna process kan vissa delar "hänga" på backend-tjänster, av vilka några redan har listats ovan - det är vad Apple kallar "smart" " göra flera saker samtidigt.... sedan sköt systemet ner henne
Applikationen kan kräva ytterligare tid om något laddas ner, laddas upp eller bearbetas. Det har ingenting att göra med GPS, VoIP eller att spela musik, som körs i minimalistiskt läge under en obegränsad tid.