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

    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 Question & Answer-session 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 svep dem åt höger, förmodligen stänga dem:

    Den senaste applistan i Ice Cream Sandwich har lagt till möjligheten att svepa apps ur listan och därigenom avvisar dem permanent (och så vitt jag vet är det en vaniljfunktion, inte en CM / anpassad ROM-en). Höjdpunkterna för dokumentation och plattform verkar inte utgöra täckning av den här funktionaliteten, men jag är nyfiken på vad systemet faktiskt gör.

    Vidare lägger jag 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 in Inställningar-> Program och kraften stoppade 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, jag testade också med USA Today app. Detta uppvisade i stort sett samma beteende, och det verkade som om det var tvunget att "återstart" efter kraftstoppet (vilket är meningslöst) även om miniatyrbilden i listan nyligen apps inte speglade detta (cachad, jag gissar?).

    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 som händer när du sveper appen från listan?

    Svaren

    Android Enthusiast-bidragare 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 som definiera 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 har några mer detaljer om detaljerna, men totalt sett kan du tänka på det som att avsluta ansökan.

    Specifikt för Music-appen tror jag att den startar en tjänst, så när själva uppgiften (Music app / användargränssnittet) kan stängas fortsätter tjänsten att springa i bakgrunden så att din musik inte plötsligt slutar bara för att uppgiften har rensats ut för minneshanteringsskäl. Det kan ha påverkat det du såg.

    Då, Eldarerathis deltog i frågeställningen och svarskretsen av livet, kom tillbaka med egen forskning för att runda ut svaret:

    Jag verkar ha hittat de magiska söktermer 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 specifikt när du sveper bort en nylig uppgift är det: (1) dödar eventuella bakgrund eller tomma processer i applikationen (se här för vad detta betyder) och (2) använder det nya API för att berätta för alla tjänster av ansökan om uppgiften tas bort så att den kan göra vad den anser är lämplig.

    Hon noterar också i en blogg kommentar:

    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 fullständig 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 ser ut som att sammanfattningen är att att sätta in en app ur listan kommer först att döda alla bakgrundsprocesser för appen, använd sedan onTaskRemoved att meddela appen att bakgrundsuppgiften har tagits bort. Vid den tiden ser det ut som om det är upp till appen att bestämma vad som händer, så jag antar det tekniskt är inte en hård och snabb regel om vad som händer med appen bortom den punkten.


    Har du 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.