9Aug

Vad händer exakt när du sveper en Android-app från den senaste applistan?

När du sveper en app från din Android-listan med pågående program, vad händer exakt med programmet och data? Läs vidare när vi undersöker.

Dagens fråga &Svarssession kommer till oss med tillstånd av Android Enthusiast-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.

Frågan

Android Enthusiast Reader Eldarerathis är nyfiken på app-swipe-funktionen som låter dig dra upp din lista med körbara appar via hemknappen och dra sedan dem till höger, förmodligen stänga dem:

Den senaste applistan iIce Cream Sandwich tillagde möjligheten att svepa apps ur listan och därigenom avfärda dem permanent( och så vitt jag vet är detta en vaniljfunktion, inte en CM / anpassad ROM-en).Dokumentationen och plattformens höjdpunkter förefaller inte som täckning av den här funktionaliteten, men jag är nyfiken på vad systemet verkligen gör.

Vidare till min nyfikenhet bestämde jag mig för att göra ett snabbtest: Jag startade musik på en CM9-installation, sedan backad out of it. Jag kontrollerade sedan listan över nya appar och såg att det verkligen var där( och i rätt skick, baserat på miniatyrbilden).Jag gick sedan till Inställningar- & gt; Program och tvingade stoppa Music-appen, men den var fortfarande listad i den senaste listan, vilket ledde till att jag trodde att den inte var kopplad till processer som ledde i bakgrunden.

Insåg att musik kanske har 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 "relaunch" efter kraftstoppet( vilket är meningsfullt) även om miniatyrbilden i listan nyligen apps inte speglade detta( cachad, gissar jag?).

Så vad händer faktiskt på OS-nivå när du sveper en app ur den senaste listan? Rader det helt enkelt appens data ur RAM och sopor samlar det, förstör det sparade tillståndet?

Vad händer exakt när du sveper appen från listan?

Svaren

Android Enthusiast bidragsgivare Austin Mills erbjuder viss insikt:

Swiping apps från listan nyligen apps är vanilj, och ja, inte väl dokumenterad. Detta har varit ämnet för en anständig diskussion på olika Android forum. .. konsensus verkar bäst beskrivas 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 somdefiniera inte explicit hantering av bakåtknapparna) det är samma sak som att slå tillbaka tillräckligt många gånger från en applikation som du lämnar ut ur den.

Länken innehåller några detaljer om detaljerna, men totalt sett kan du tänka på det som att avsluta ansökan.

Specifikt för Musik-appen tror jag att den startar en tjänst, så medan uppgiften själv( Musikapp / UI) kan stängas fortsätter tjänsten att springa i bakgrunden så att din musik inte plötsligt slutar bara för attUppgiften blev klar för minneshanteringsskäl. Det kan ha påverkat det du såg.

Sedan deltog Eldarerathis i en fråga om livscykel och frågeställning med egen forskning för att runda ut svaret:

Jag verkar ha hittat de magiska sökord som ledde till några förklaringar från Google-anställda. Specifikt hittade jag ett par olika ställen där Dianne Hackborn förklarar vad som händer när du sveper någonting ur den senaste listan. Den första är en kommentar till en av hennes inlägg i Google+:

[W] hat händer speciellt när du sveper bort en nylig uppgift är det:( 1) dödar eventuella bakgrund eller tomma processer i programmet( se här för vad detta betyder),och( 2) använder det nya API-programmet för att berätta om alla tjänster i applikationen om den uppgift som tas bort så att den kan göra vad den anser är lämplig.

Hon noterar också i en bloggkommentare:

Att ta bort en post i de senaste uppgifterna kommer faktiskt att döda eventuella bakgrundsprocesser som finns för processen. Det kommer inte direkt att få tjänster att stoppa, men det finns ett API för att de ska få reda på att uppgiften har tagits bort för att bestämma om de vill att detta skulle innebära att de borde sluta. Det här är så att borttagning säger att den senaste uppgiften för en e-postapp inte kommer att orsaka att den slutar kontrollera efter e-post.

Om du verkligen vill helt stoppa en app kan du länge trycka på de senaste uppgifterna för att gå till appinfo och slå kraftstopp där. Force stop är en komplett död av appen - alla processer dödas, alla tjänster stoppas, alla meddelanden borttagna, alla larm borttagna, etc. Appen får inte starta igen tills det uttryckligen begärts.

Så det verkar som att sammanfattningen är att att sätta in en app ur listan kommer först att döda alla bakgrundsprocesser för appen och sedan använda onTaskRemoved för att meddela appen att bakgrundsuppgiften har tagits bort. På den tiden ser det ut som om det är upp till appen att bestämma vad som händer, så jag antar att det tekniskt är inte en hård och snabb regel om vad som händer med appen bortom den punkten.

Har något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.