Vad händer exakt med appen och data när du sveper en app från listan över Android-appar som för närvarande körs? Läs vidare när vi undersöker.
Dagens fråga & svar-session kommer till oss med tillstånd av Android Enthusiast - en underavdelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Frågan
Android Entusiast-läsaren Eldarerathis är nyfiken på app-svepfunktionaliteten som låter dig dra upp din lista över körande appar via hemknappen och sedan svepa dem åt höger, förmodligen för att stänga dem:
Den senaste applistan i Ice Cream Sandwich lade till möjligheten att svepa appar ur listan och därmed avvisa dem permanent (och så vitt jag vet är detta en vaniljfunktion, inte en CM / anpassad ROM-funktion). Dokumentationen och höjdpunkterna på plattformen verkar inte täcka funktionaliteten under huven, men jag är nyfiken på att veta vad systemet faktiskt gör.
Ytterligare till min nyfikenhet bestämde jag mig för att göra ett snabbtest: Jag startade musik på en CM9-installation och backade sedan ur den. Jag kollade sedan listan över de senaste apparna och såg att den verkligen var där (och i rätt tillstånd, baserat på miniatyren). Jag gick sedan in
Inställningar-> Programoch kraft stoppade Music-appen, men den var fortfarande listad i den senaste listan, vilket fick mig att tro att den inte är kopplad till processer som ligger kvar i bakgrunden.Nu när jag insåg att musik kan ha varit ett dåligt val testade jag också med appen USA Today. Detta uppvisade i princip samma beteende, och det verkade som om det var tvunget att "starta om" efter kraftstoppet (vilket är vettigt) men miniatyrbilden i listan över de senaste apparna speglade inte detta (cachat, antar jag?).
Så, vad händer egentligen på OS-nivå när du sveper en app ur den senaste listan? Rensar det helt enkelt appens data ur RAM och samlar det skräp och förstör dess sparade tillstånd?
Vad händer exakt när du sveper appen från listan?
Svaren
Android Enthusiast-bidragsgivare Austin Mills erbjuder viss inblick:
Att dra appar från den senaste applistan är vanilj och ja, inte väldokumenterad. Detta har varit föremål för en anständig diskussion på olika Android-forum ... konsensus verkar vara bäst beskriven här i några kommentarer : att beteendet liknar men inte exakt detsamma som att stänga en app - i allmänhet (för appar som inte definierar uttrycklig hantering av bakknappen) är det samma sak som att slå tillbaka tillräckligt många gånger från en applikation som du lämnar Det.
Länken har lite mer information om detaljerna, men totalt sett kan du tänka på det som att du avslutar applikationen.
Specifikt för Music-appen tror jag att den startar en tjänst, så även om själva uppgiften (Music-appen / UI) kan stängas fortsätter tjänsten att köras i bakgrunden så att din musik inte plötsligt slutar bara för att uppgiften fick rensas av minneshanteringsskäl. Det kan ha påverkat det du såg.
Då han deltog i livets fråga-och-svar-krets kom Eldarerathis tillbaka med egen forskning för att avrunda svaret:
Jag verkar ha hittat de magiska sökord som ledde till några förklaringar från Googles anställda. Specifikt hittade jag ett par olika platser där Dianne Hackborn förklarar vad som händer när du sveper något ur den senaste listan. Den första är en kommentar på ett av hennes inlägg på Google+ :
[W] som händer specifikt när du sveper bort en ny uppgift är det: (1) dödar eventuell bakgrund eller tomma processer i applikationen (se här för vad detta betyder), och (2) använder det nya BRAND att berätta för alla tjänster i applikationen om uppgiften som tas bort så att den kan göra vad den tycker är lämplig.
Hon också anteckningar i en bloggkommentar :
Att ta bort en post i de senaste uppgifterna kommer faktiskt att döda alla bakgrundsprocesser som finns för processen. Tjänsterna stannar inte direkt, men det finns ett API för dem att ta reda på att uppgiften togs bort för att avgöra om de vill att detta ska betyda att de ska sluta. Detta för att ta bort säg att den senaste uppgiften för en e-postapp inte kommer att få den att sluta söka efter e-post.
Om du verkligen vill stoppa en app helt kan du länge trycka på de senaste uppgifterna för att gå till appinfo och slå kraftstopp där. Tvinga stopp är ett fullständigt dödande av appen - alla processer dödas, alla tjänster stoppas, alla aviseringar tas bort, alla larm tas bort etc. Appen får inte starta igen förrän det uttryckligen begärs.
Så det ser ut som att sammanfattningen är att att dra en app ur listan först dödar alla bakgrundsprocesser för appen och sedan använder
onTaskRemovedför att meddela appen att bakgrundsuppgiften togs bort. Vid den tiden ser det ut som det är upp till appen att bestämma vad som händer, så jag antar att det är tekniskt är inte en hård och snabb regel om vad som händer med appen bortom den punkten.