Wat gebeurt er precies met de app en de gegevens wanneer u een app uit uw lijst met actieve Android-apps veegt? Lees verder terwijl we onderzoeken.
De vraag- en antwoordsessie van vandaag komt tot ons dankzij Android Enthusiast, een onderdeel van Stack Exchange, een community-gedreven groepering van Q & A-websites.
De vraag
Android Enthusiast-lezer Eldarerathis is nieuwsgierig naar de app-swipe-functionaliteit waarmee je je lijst met actieve apps kunt openen via de homeknop en ze vervolgens naar rechts kunt vegen, vermoedelijk om ze te sluiten:
De lijst met recente apps in Ice Cream Sandwich heeft de mogelijkheid toegevoegd om apps uit de lijst te vegen, waardoor ze permanent worden verwijderd (en voor zover ik weet is dit een vanillefunctie, geen CM / aangepaste ROM). De documentatie en hoogtepunten op het platform lijken niet de werking van deze functionaliteit onder de motorkap te dekken, maar ik ben benieuwd wat het systeem eigenlijk doet.
Om mijn nieuwsgierigheid verder te vergroten, besloot ik een snelle test te doen: ik startte Music op een CM9-installatie en stopte er toen weer mee. 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-> Toepassingenen geforceerd stopte de Muziek-app, maar deze stond nog steeds in de recente lijst, waardoor ik geloofde dat deze geen verband houdt met processen die op de achtergrond blijven hangen.Nu ik me realiseerde dat muziek misschien een slechte keuze was, heb ik ook getest met de USA Today-app. Dit vertoonde in wezen hetzelfde gedrag, en het leek alsof het werd gedwongen om opnieuw te starten na de gedwongen stop (wat logisch is) hoewel de miniatuur in de lijst met recente apps dit niet weerspiegelde (in de cache, denk ik?).
Dus, wat gebeurt er eigenlijk op OS-niveau wanneer u een app uit de recente lijst veegt? Wist het simpelweg de gegevens van de app uit het RAM en verzamelt het vuilnis, waardoor de opgeslagen staat wordt vernietigd?
Wat gebeurt er precies als je de app van de lijst veegt?
De antwoorden
Austin Mills, een medewerker van Android Enthusiast, biedt enig inzicht:
Apps uit de lijst met recente apps vegen is vanille en ja, niet goed gedocumenteerd. Dit is het onderwerp geweest van een behoorlijke hoeveelheid discussie op verschillende Android-forums ... de consensus lijkt het best te worden beschreven hier in enkele commentaren : dat het gedrag vergelijkbaar is met, maar niet precies hetzelfde is als het sluiten van een app - in het algemeen (voor apps die geen expliciete afhandeling van de terugknop definiëren) is het hetzelfde als genoeg keren terugslaan vanuit een applicatie die je verlaat het.
De link bevat wat meer details over de details, maar over het algemeen kun je het zien als het afsluiten van de applicatie.
Specifiek voor de Muziek-app, denk ik dat het een service start, dus hoewel de taak zelf (de Muziek-app / UI) kan worden gesloten, blijft de service op de achtergrond draaien, zodat je muziek niet plotseling stopt omdat de taak werd gewist om redenen van geheugenbeheer. Dat kan van invloed zijn geweest op wat u zag.
Toen hij deelnam aan de vraag-en-antwoord-cirkel van het leven, kwam Eldarerathis terug met wat eigen onderzoek om het antwoord af te ronden:
Ik heb blijkbaar de magische zoektermen gevonden die hebben geleid tot enkele uitleg van Google-medewerkers. In het bijzonder vond ik een aantal verschillende plaatsen waar Dianne Hackborn uitlegt wat er gebeurt als je iets uit de recente lijst veegt. De eerste is een reactie op een van haar Google+ berichten :
[W] wat specifiek gebeurt wanneer u een recente taak wegveegt, is: (1) doodt alle achtergrondprocessen of lege processen van de applicatie (zie hier voor wat dit betekent), en (2) gebruikt het nieuwe BRAND om alle services van de applicatie te vertellen over de taak die wordt verwijderd, zodat deze kan doen wat hij nodig acht.
Zij ook aantekeningen in een blogreactie :
Als u een item in recente taken verwijdert, worden alle achtergrondprocessen die voor het proces bestaan, gedood. Het zorgt er niet direct voor dat services stoppen, maar er is een API waarmee ze erachter kunnen komen dat de taak is verwijderd om te beslissen of ze willen dat dit betekent dat ze moeten stoppen. Dit is zodat het verwijderen van, zeg maar de recente taak van een e-mailapp, er niet voor zorgt dat het controleren op e-mail stopt.
Als je een app echt volledig wilt stoppen, kun je lang op recente taken drukken om naar app-info te gaan en daar op geforceerd stoppen te drukken. Forceer stop is een complete stopzetting van de app - alle processen worden stopgezet, alle services gestopt, alle meldingen verwijderd, alle alarmen verwijderd, enz. De app mag niet opnieuw worden gestart totdat dit 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 beëindigen en vervolgens
onTaskRemovedom de app te laten weten dat de achtergrondtaak is verwijderd. Op dat moment lijkt het aan de app om te beslissen wat er gebeurt, dus technisch denk ik is het niet een vaste regel over wat er na dat punt met de app gebeurt.