Hur Android hanterar processer
Windows tillåter att stationära appar fortsätter att köra, oavsett om de är synliga eller inte, medan Apples IOS endast tillåter att appar kan utföra några begränsade uppgifter i bakgrunden. Android sitter någonstans mellan - apps som körs i förgrunden prioriteras, men appar har mycket mer frihet att köra i bakgrunden än de gör på iOS.
Vi tar en titt på exakt hur Android hanterar de appar och processer som körs på din telefon eller surfplatta, och demystifierar vad som händer i bakgrunden.
Process Lifecycle Hierarchy
En process på Android kan vara i en av fem olika stater vid varje given tillfälle, från viktigaste till minst viktiga:
- 1. Förgrundsprocess: Appen du använder betraktas som förgrundsprocessen. Andra processer kan också betraktas som förgrundsprocesser, till exempel om de interagerar med processen som för närvarande finns i förgrunden. Det finns bara några förgrundsprocesser vid vilken tidpunkt som helst.
- 2. Synlig process: En synlig process är inte i förgrunden, men påverkar fortfarande vad du ser på din skärm. Förgrundsprocessen kan till exempel vara en dialogruta som låter dig se en app bakom den. Appen som är synlig i bakgrunden är en synlig process.
- 3. Serviceprocess: En serviceprocess är inte knuten till någon app som är synlig på din skärm. Det gör dock något i bakgrunden, till exempel att spela musik eller ladda ner data i bakgrunden. Om du till exempel börjar spela musik och växla till en annan app är musikspelet i bakgrunden hanteras av en serviceprocess.
- 4. Bakgrundsprocess: Bakgrundsprocesser är inte synliga för användaren. De har ingen inverkan på erfarenheten av att använda telefonen. Vid varje tillfälle körs många bakgrundsprocesser för närvarande. Du kan tänka på dessa bakgrundsprocesser som pausade appar. De hålls i minnet så att du snabbt kan fortsätta använda dem när du går tillbaka till dem, men de använder inte värdefull CPU-tid eller andra resurser utan minnesresurser.
- 5. Tom process: En tom process innehåller inte längre någon appdata. Det kan förvaras för cachingändamål för att påskynda applanseringar senare, eller systemet kan döda det efter behov.
Låt oss säga att du slår på telefonen och öppnar en musikapp. Medan du använder det, kommer musikappen att vara en förgrundsprocess. När du börjar spela musik och lämna musikappen kommer musiken att fortsätta spela som en serviceprocess.
Låt oss titta på Angry Birds som ett annat exempel. Angry Birds skulle vara en förgrundsprocess medan du spelade den. När du lämnar Angry Birds och anger Gmail-appen för att se ditt e-postmeddelande blir Angry Birds en bakgrundsprocess (eftersom det inte behöver göra någonting i bakgrunden), medan Gmail blir förgrundsprocessen. När du växlar tillbaka till Angry Birds blir det din förgrundsprocess och spelet kommer att fortsätta snabbt. Angry Birds använde inte resurser i bakgrunden - bortsett från lite RAM - men det fortsätter snabbt eftersom det förblev cachelagrat och redo att fortsätta.
Android hanterar automatiskt processer
Android gör ett bra jobb med att automatiskt hantera dessa processer, varför du inte behöver en uppgiftsmördare på Android.
När Android behöver fler systemresurser börjar den först och främst döda de minst viktiga processerna. Android kommer att börja döda tomma och bakgrundsprocesser för att frigöra minne om du kör lågt. Om du behöver mer minne, till exempel om du spelar ett särskilt krävande spel på en enhet utan mycket RAM, börjar Android sedan döda serviceprocesser, så din streaming musik och filnedladdningar kan sluta.
I de flesta fall gör Android det här utan att behöva oroa dig för det. Android använder intelligent enhetens RAM för att cache-appar och andra data, eftersom det inte finns någon anledning att lämna din RAM tom.
Självklart tillhandahåller Android appar med så mycket flexibilitet att de har utrymme att misshandla. En dålig kodad app kan till exempel starta en serviceprocess som fortfarande löper i bakgrunden hela tiden, med hela din CPU-tid och dramatiskt minskar batteriets livslängd.
En intressant sak som du kommer att märka i antivirusprogram som Avast! för Android är det att antivirusprogrammet använder en meddelandeikon. Om du försöker inaktivera meddelandesymbolen Avast! kommer att rekommendera mot det. Genom att ha en synlig meddelandeikon, Avast! gör sig till en app med högre prioritet, vilket hindrar Android från att betrakta det som en bakgrundsapp och döda den.
Android Apps kan börja svara på händelser
Android-appar kan också starta som svar på händelser. Till exempel kan en utvecklare programmera sin app för att automatiskt köra vid uppstart och köra en tjänst i bakgrunden. Appar kan startas som svar på en rad andra händelser, till exempel när du tar en bild, när din dataanslutning ändras osv. Detta gör det möjligt för appar att utföra åtgärder som svar på händelser utan att spåra hela tiden i bakgrunden.
Hantera processer
Du behöver inte hantera processer manuellt, men det finns några sätt att göra det om du vill. Du kan använda multitasking-menyn på Android 4.0 och senare för att göra grundläggande processhantering. För att komma åt det, tryck på den dedikerade multitasking-knappen på Nexus-enheter. På andra Android-enheter kan du behöva dubbelklicka eller länge trycka på knappen Hem.
Appar som visas i menyn är sannolikt i "bakgrundsprocess" -status. Du kan döda dem genom att svepa en app till vänster eller höger, som tar bort den från enhetens minne. Det här borde inte vara nödvändigt, men kan hjälpa dig när du vill snabbt döda en app - kanske är det felaktigt.
Du kan också gå in på skärmen Inställningar, trycka på Apps, tryck på en app och använd Force Stop-knappen för att döda en felaktig app.
Android är baserad på Linux, och varje app på Android är tilldelad till ett annat Linux användar-ID eller användarkonto. Detta isolerar apps från varandra. Om du roterar din enhet kan appar fly deras användarsandlådor och köras med root-privilegier.
Bildkrediter: JD Hancock på Flickr