Jump to content
Just nu i M3-nätverket

Multitasking drar batteri


thella

Recommended Posts

Iphonen kör ju automatiskt alla program man haft uppe i bakgrunden. Upplever att detta drar en del batteri. Måste man stänga ner programmen manuellt hela tiden eller går det att göra smidigare?

Link to comment
Share on other sites

Man måste stänga av dem manuellt genom att: 2 x hemknappen, håll på ikonen och sedan trycka bort dem en efter en.

Link to comment
Share on other sites

Man måste stänga av dem manuellt genom att: 2 x hemknappen, håll på ikonen och sedan trycka bort dem en efter en.

 

Tvek på att multitaskingen drar batteri då operativsystemet pausar applikationen, samma med Android men där sköter hela systemet detta automatiskt. Tar en applikation för mycket minne t.ex. så stängs den automatiskt ner.

Link to comment
Share on other sites

Iphonen kör ju automatiskt alla program man haft uppe i bakgrunden. Upplever att detta drar en del batteri. Måste man stänga ner programmen manuellt hela tiden eller går det att göra smidigare?

 

iPhone kör INTE program i bakgrunden annat än i vissa speciella fall. Appar som inte syns är som regel pausade och gör med andra ord ingenting. De ligger kvar i minnet för att direkt kunna fortsätta i samma läge som de en gång var.

 

Det finns en del undantag, t ex kan en app hålla koll på din position, en app kan slutföra en sak du påbörjat och liknande saker. Men som sagt, regeln är att när ett program inte syns, ja då är det pausat.

Link to comment
Share on other sites

samma med Android men där sköter hela systemet detta automatiskt. Tar en applikation för mycket minne t.ex. så stängs den automatiskt ner.

 

Precis som i iOS då?

Link to comment
Share on other sites

iOS gör inte detta.

 

Jo, det gör iOS.

 

När en app är "suspended" och minnet behövs kommer iOS att terminera appen.

 

Läs "iOS Application Programming Guide", där står det rätt bra beskrivet.

 

När en app hamnar i bakgrunden kommer den väldigt snart till "suspended state" vilket betyder:

 

"The application is in the background but is not executing code. The system moves application to this state automatically and at appropriate times. While suspended, an application is essentially freeze-dried in its current state and does not execute any code. During low-memory conditions, the system may purge suspended applications without notice to make more space for the foreground application.

 

The suspended state is available only in iOS 4 and later and on devices that support multitasking. If this state is not available, applications are terminated and moved to the not running state instead."

 

 

Link to comment
Share on other sites

KristerBlomberg

iPhone kör INTE program i bakgrunden annat än i vissa speciella fall. Appar som inte syns är som regel pausade och gör med andra ord ingenting. De ligger kvar i minnet för att direkt kunna fortsätta i samma läge som de en gång var.

 

Det finns en del undantag, t ex kan en app hålla koll på din position, en app kan slutföra en sak du påbörjat och liknande saker. Men som sagt, regeln är att när ett program inte syns, ja då är det pausat.

 

Jag har absolut känslan av att Skype och MSN drar en hel del batteri. Dessa är ju definitivt aktiva även om de inte "syns"

Link to comment
Share on other sites

Jag har absolut känslan av att Skype och MSN drar en hel del batteri. Dessa är ju definitivt aktiva även om de inte "syns"

 

Ingen som läser Apples dokumentation? ;-)

 

Skype är en Voip-tjänst och har sin egen gräddfil i iOS, dokumenterat och klart. Skype fungerar inte annars. Om Skype drar batteri när ingen "pratar" tycker jag det låter som en "dålig app"!

 

MSN och liknande måste naturligtvis registrera sig för att ta emot saker som händer. Jag använder Meebo som i sig håller koll på måååånga IM-tjänster (bl a MSN) och har inte märkt att den ska dra speciellt mycket ström. Kan vara samma sak här, kanske MSN-appen är en "dålig app"?

 

Fotnot: Med "dålig app" menar jag att de som skrivit appen inte har använt alla finesser som finns på det sätt de är avsedda att användas på.

Link to comment
Share on other sites

Skype drar batteri när programmet är pausat i bakgrunden. Ett problem som många har klagat på i skypes egna forum. Viber har samma problem. De använder inte säg utav push notisar vilket säkert är en del av problemet. Märker bara att det dras batteri när dessa två körs i bakgrunden. Annars märker jag ingen skillnad.

Link to comment
Share on other sites

Som sagt dåligt kodade program kan man inte lasta Apple för. Mulittaskingen ska inte dra extra batteri om utvecklarna kodar sina appar korrekt.

Link to comment
Share on other sites

Push och liknade funktioner drar mer energi. Men det är riktigt att multitaskingen i sig själv oftast inte påverkar utan andra funktioner som kan aktivera en app i brakgrunden kan påverka batteritiden.

Link to comment
Share on other sites

Jo, det gör iOS.

 

När en app är "suspended" och minnet behövs kommer iOS att terminera appen.

 

Läs "iOS Application Programming Guide", där står det rätt bra beskrivet.

 

När en app hamnar i bakgrunden kommer den väldigt snart till "suspended state" vilket betyder:

 

"The application is in the background but is not executing code. The system moves application to this state automatically and at appropriate times. While suspended, an application is essentially freeze-dried in its current state and does not execute any code. During low-memory conditions, the system may purge suspended applications without notice to make more space for the foreground application.

 

The suspended state is available only in iOS 4 and later and on devices that support multitasking. If this state is not available, applications are terminated and moved to the not running state instead."

 

 

 

Jag skulle nog föreslå att du kikar lite närmare på vad som faktiskt står i iOS Application Programming:

 

 

"Multitasking Support

In iOS 4 and later, multitasking allows applications to run in the background even when they are not visible on the screen. Most background applications reside in memory but do not actually execute any code. These applications are suspended by the system shortly after entering the background to preserve battery life. Applications can ask the system for background execution time in a number of ways, though."

 

Läser du vidare så finns det två olika lägen Background och Suspend:

 

Background:

"The application is in the background and executing code. Most applications enter this state briefly on their way to being suspended. However, an application that requests extra execution time may remain in this state for a period of time. In addition, an application being launched directly into the background enters this state instead of the inactive state. For information about how to execute code while in the background, see "Executing Code in the Background."

 

The background state is available only in iOS 4 and later and on devices that support multitasking. If this state is not available, applications are terminated and moved to the not running state instead."

 

Suspend:

"The application is in the background but is not executing code. The system moves application to this state automatically and at appropriate times. While suspended, an application is essentially freeze-dried in its current state and does not execute any code. During low-memory conditions, the system may purge suspended applications without notice to make more space for the foreground application.

 

The suspended state is available only in iOS 4 and later and on devices that support multitasking. If this state is not available, applications are terminated and moved to the not running state instead."

 

Multitasking på iOS innebär just MULTI tasking, dvs. att du låter flera applikationer köra kod samtidigt. De flesta applikationer som "Photos" har inget behov av att exekvera kod, t.ex. finns det inget behov av att fortsätta spela upp ett bildspel om detta ändå inte syns på skärmen, alltså läggs all kod i dvala när applikationen går i suspend men du minns det läge du befann dig i när applikationen gick i suspend så att du kan återgå till detta läge när du aktiverar appen igen. För att spara batteri och undvika att påverka prestanda på appar i förgrunden skall ingen kod exekveras som inte behövs. En välskriven applikation skall alltså se till att enbart den kod som absolut behöver exekveras tillåts fortsätta när applikationen läggs i background. Till exempel så vore det rätt trist om all kommunikation med Spotify appen slutade fungera så fort du lägger denna i background och alltså finns det i audio framework funktioner för att se till så att systemet inte tvingar ner appen i suspend. Självklart kommer en app som laddar ner data, avkodar en bitström och spelar upp denna, att förbruka energi från batteriet.

 

Det finns tre background funktioner i iOS som måste deklareras i förväg och det är "audio", "location" och "voip" som kräver att appen körs i bakgrunden för att fungera. Alla tre ger tillgång till exekveringstid i bakgrunden under lite olika premisser.

 

Det man ska tänka på är att applikationer som utnyttjar location och hämtar data från GPS chipet gör att du ganska snabbt drar ur batteriet eftersom denna verkar vara ganska törstig (särskilt om man i appen begärt att denna skall ha tillgång till kontinuerlig uppdatering av position), åtminstone på min iPhone. Jag märker också en klar skillnad i antalet appar som är igång och den standby tid jag får på iPhonen. Det trots att jag bara har appar skrivna av Apple igång.

 

Att den multitasking som finns i iOS inte är av exakt samma typ som den man hittar i vanliga desktop OS (vilket Apple fick en hel del kritik för, befogad eller obefogad låter jag vara osagt) där varje program får exekveringstid på regelbundna tidsintervall (preemtive multitasking) eller när de själva släpper CPUn (cooperative multitasking). Apple har valt en väg som sparar på energiförbrukningen från batteriet men som ändå ger möjlighet till viss bakgrundskörning, men med stora begränsningar. Du kan inte fritt köra hur mycket kod som helst i bakgrunden men du har möjlighet att exekvera vissa delar av koden under vissa perioder. Självklart går det att utnyttja detta i dåligt skrivna appar för att exekvera mer kod än man borde göra men det är en helt annan fråga.

 

Edit:

 

En tjänst som till exempel Skype eller andra IM tjänster kör under VoIP behöver exekvera kod i bakgrunden för att upprätthålla sin koppling mot sin service provider. Om dessa inte regelbundet håller kontakt med servern kommer dessa att "automatiskt logga ur klienten" eftersom denna anses vara otillgänglig på nätet. Samtidigt behöver appen väckas upp med jämna mellanrum för att kunna ta emot och sända den nödvändiga data som behövs. Hur ofta beror på vad appen behöver göra. (T.ex. ta emot inkommande samtal, kunna ta emot inkommande IM etc.)

Att det finns saker som inte ryms in under iOS definition för hur världen borde fungera med push notice etc. gör inte appen till dålig utan är ett tecken på att applikationer existerar i flera världar än enbart på iPhone. Du kan inte direkt begära att alla system i världen skall skrivas om för att Apple bestämmer sig för att bygga en iPhone.

Link to comment
Share on other sites

KristerBlomberg

Jag skulle nog föreslå att du kikar lite närmare på vad som faktiskt står i iOS Application Programming:

 

 

"Multitasking Support

In iOS 4 and later, multitasking allows applications to run in the background even when they are not visible on the screen.

.......

 

 

Tack för en mycket bra och utförlig beskrivning.

 

Denna frågan har ju ältats ett tag i ganska många trådar, men nu verkar det som vi äntligen fått svaret. storkram.gif

Link to comment
Share on other sites

Jag har absolut känslan av att Skype och MSN drar en hel del batteri. Dessa är ju definitivt aktiva även om de inte "syns"

 

Kanske inte var helt enkelt att förstå vad jag menade. Jag tycker inte man ska bekymra sig om att manuellt avsluta appar man startat eftersom de som regel inte gör något när de inte syns (och hanteras av iOS t ex när minnet behövs till annat). Men som med alla regler finns det ju undantag, de två du nämner verkar vara såna undantag.

Link to comment
Share on other sites

Tack johan_um för en väldigt uttömmande och bra förklaring till de olika staten. Det finns en del kvar att läsa inser jag!!!

 

Ett par kommentarer/frågor:

 

Läser du vidare så finns det två olika lägen Background och Suspend:

...

Background:

"The application is in the background and executing code. Most applications enter this state briefly on their way to being suspended. However, an application that requests extra execution time may remain in this state for a period of time.

 

Det kanske är en vild gissning, men eftersom detta stöd måste begäras av appen "manuellt" så kommer merparten av appar fungera så att de faktiskt INTE drar batteri när de "inte syns" (för att översätta till ett begrepp som går att observera), d v s de flesta appar faktiskt antingen är i förgrunden och kör kod eller är suspended?

 

Kanske en liten indikering kunde vara på plats på apparna om de körs i bakgrunden eller inte, det skulle kanske minska på antalet oroliga frågor av typen "varför är det så många program som körs, måste jag inte stänga av dem".

 

Det finns tre background funktioner i iOS som måste deklareras i förväg och det är "audio", "location" och "voip" som kräver att appen körs i bakgrunden för att fungera. Alla tre ger tillgång till exekveringstid i bakgrunden under lite olika premisser.

 

Hmmm, finns det inte en "task completion" också? Eller räknas den inte bland dessa funktioner?

 

Det man ska tänka på är att applikationer som utnyttjar location och hämtar data från GPS chipet gör att du ganska snabbt drar ur batteriet eftersom denna verkar vara ganska törstig (särskilt om man i appen begärt att denna skall ha tillgång till kontinuerlig uppdatering av position), åtminstone på min iPhone. Jag märker också en klar skillnad i antalet appar som är igång och den standby tid jag får på iPhonen. Det trots att jag bara har appar skrivna av Apple igång.

 

Att "tracka" (uppdatera så pass ofta att man kan få ut sin färdväg på karta) dra en hel del ström. Om jag extraplorerar den förbrukning jag sett så tror jag att min iPhone4 kan tracka nånstans mellan 5-10 timmar med MotionX.

 

Det som utan tvekan påverkar min förbrukning mest är hur pass bra 3G-täckning jag har. Här på jobbet inuti ett rejält betonghus pendlar täckningen mellan riktigt dålig och obefintlig och batteriet dras ur snabbt. Hemma med koppling via W-LAN är det en helt annan sak...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...