Startpagina » hoe » Wat gebeurt er precies wanneer u een Android-app in de lijst met recente apps vegen?

    Wat gebeurt er precies wanneer u een Android-app in de lijst met recente apps vegen?

    Wat gebeurt er precies met de toepassing en gegevens wanneer u een app uit uw lijst met Android-actieve apps haalt? Lees verder terwijl we onderzoeken.

    De Question & Answer-sessie van vandaag komt naar ons met dank aan Android Enthusiast - een onderdeel van Stack Exchange, een community-driven groep van Q & A-websites.

    De vraag

    Android-liefhebber-lezer Eldarerathis is nieuwsgierig naar de app-swipe-functionaliteit waarmee je je lijst met actieve apps kunt oproepen via de startknop en deze vervolgens naar rechts kunt vegen, waarschijnlijk om ze te sluiten:

    De recente lijst met apps in Ice Cream Sandwich voegde de mogelijkheid toe om apps uit de lijst te vegen, waardoor ze permanent worden verwijderd (en voor zover ik weet is dit een vanillefunctie, geen CM / custom ROM-versie). De documentatie en platformhoogtepunten lijken niet de werking van deze functionaliteit onder de motorkap te beschrijven, maar ik ben benieuwd wat het systeem doet.

    Omdat ik mijn nieuwsgierigheid verder wilde vergroten, besloot ik een korte test te doen: ik startte muziek op een CM9-installatie en maakte er vervolgens een back-up van. Ik controleerde vervolgens de lijst met recente apps en zag dat deze er inderdaad was (en in de juiste staat, op basis van de miniatuur). Ik ging toen naar binnen Instellingen-> Toepassingen en force stopte de muziek-app, maar deze stond nog steeds in de recente lijst, waardoor ik geloofde dat hij niet verbonden was met processen die op de achtergrond blijven hangen.

    Ik realiseerde me nu dat muziek misschien een slechte keuze was, en ik heb ook getest met de app USA Today. Dit vertoonde in wezen hetzelfde gedrag, en het leek alsof het werd gedwongen om opnieuw te starten na de force stop (wat logisch is) hoewel de miniatuur in de lijst met recente apps dit niet weerspiegelde (in de cache, ik vermoed?).

    Wat gebeurt er eigenlijk op OS-niveau als u een app uit de recente lijst haalt? Maakt de app de gegevens eenvoudig uit het RAM-geheugen en verzamelt het, waardoor de opgeslagen status wordt vernietigd?

    Wat er precies aan de hand is wanneer je de app van de lijst haalt?

    De antwoorden

    Bijdrager Android Enthusiast Austin Mills biedt enig inzicht:

    Het vegen van apps uit de lijst met recente apps is vanille en ja, niet goed gedocumenteerd. Dit was het onderwerp van een behoorlijke hoeveelheid discussie op verschillende Android-forums ... de consensus lijkt hier het beste te worden beschreven in sommige opmerkingen: dat het gedrag vergelijkbaar is met, maar niet precies hetzelfde is als het sluiten van een app - in het algemeen (voor apps die definieer geen expliciete terugknopafhandeling) het is hetzelfde als voldoende terug te slaan vanuit een toepassing die u verlaat.

    De link heeft wat meer details over de details, maar over het algemeen kun je het beschouwen als het afsluiten van de applicatie.

    Specifiek voor de Music-app, geloof ik dat het een service start, dus terwijl de taak zelf (de muziek-app / UI) mogelijk gesloten is, blijft de service op de achtergrond draaien, zodat je muziek niet plotseling stopt omdat de taak werd gewist om redenen van geheugenbeheer. Dat heeft mogelijk invloed gehad op wat je zag.

    Toen nam Eldarerathis deel aan de vraag-en-antwoord-cirkel van het leven en kwam terug met een eigen onderzoek om het antwoord te completeren:

    Ik lijkt de magische zoektermen te hebben gevonden die hebben geleid tot enkele verklaringen van Google-medewerkers. Specifiek, ik vond een aantal verschillende plaatsen waar Dianne Hackborn uitlegt wat er gebeurt als je iets uit de recente lijst haalt. De eerste is een reactie op een van haar Google+ berichten:

    [W] er gebeurt specifiek wanneer je een recente taak wegvaagt, is het: (1) doodt elke achtergrond of lege processen van de applicatie (zie hier voor wat dit betekent), en (2) gebruikt de nieuwe API om alle services van de applicatie te vertellen de toepassing over de taak die wordt verwijderd, zodat deze kan doen wat hij denkt dat passend is.

    Ze noteert ook in een blogcommentaar:

    Als u een item in recente taken verwijdert, worden de achtergrondprocessen die voor het proces bestaan, gedood. Het zorgt er niet direct voor dat services stoppen, maar er is een API om te ontdekken dat de taak is verwijderd om te bepalen of ze willen dat dit betekent dat ze moeten stoppen. Dit is zo dat als je zegt dat de recente taak van een e-mailapp niet ertoe leidt dat de e-mail niet meer wordt gecontroleerd.

    Als je een app echt volledig wilt stoppen, kun je lang op recente taken drukken om naar app-info te gaan en daar de force stop te activeren. Force stop is een complete kill van de app - alle processen worden gedood, alle services worden gestopt, alle meldingen worden verwijderd, alle alarmen worden verwijderd, enzovoort. De app mag niet opnieuw worden gestart totdat expliciet wordt gevraagd.

    Het lijkt er dus op dat de samenvatting is dat het vegen van een app uit de lijst eerst alle achtergrondprocessen voor de app zal doden en dan gebruiken onTaskRemoved om de app op de hoogte te stellen dat de achtergrondtaak is verwijderd. Op dat moment lijkt het erop dat het aan de app is om te beslissen wat er gebeurt, dus ik denk dat het technisch gezien is is niet een vaste regel over wat er na dat punt met de app gebeurt.


    Heb je iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread.