Hva skjer akkurat når du sveiper en Android-app fra listen Nylig Apps?
Når du sveiper en app fra listen for Android-kjører-apps, hva skjer akkurat med applikasjonen og dataene? Les videre når vi undersøker.
Dagens Spørsmål & Svar-sesjon kommer til oss med lov av Android Enthusiast-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.
Spørsmålet
Android Enthusiast Reader Eldarerathis er nysgjerrig på app-swipe-funksjonaliteten som gjør det mulig å trekke opp listen over kjørerapper via hjemmeknappen og deretter sveipe dem til høyre, antagelig å lukke dem:
Den nyeste applisten i Ice Cream Sandwich la til evnen til å sveipe apps ut av listen, og dermed avvist dem permanent (og så vidt jeg vet dette er en vaniljefunksjon, ikke en CM / egendefinert ROM-en). Dokumentasjons- og plattformshøydepunkter ser ikke ut til å dekke under-the-hood-funksjonene til denne funksjonaliteten, men jeg er nysgjerrig på å vite hva systemet egentlig gjør.
Videre legger jeg til min nysgjerrighet, bestemte jeg meg for å gjøre en rask test: Jeg startet musikk på en CM9-installasjon, og deretter støttet av den. Jeg sjekket deretter den nyeste applisten og så det var faktisk der (og i riktig tilstand, basert på miniatyrbildet). Jeg gikk da inn
Innstillinger-> Programmer
og kraften stoppet musikkappen, men den ble fremdeles oppført i den siste listen, noe som førte meg til å tro at det ikke var koblet til prosesser som lå i bakgrunnen.Å realisere nå at musikk kan ha vært et dårlig valg, jeg testet også med USA Today app. Dette viste i utgangspunktet den samme oppførselen, og det virket som om det ble tvunget til å "relaunch" etter kraftstoppet (som gir mening) selv om miniatyrbildet i den nyeste applisten ikke gjenspeiler dette (cached, gjetter jeg?).
Så, hva skjer faktisk på OS-nivå når du sveiper en app ut av den siste listen? Rydder det bare appens data ut av RAM og søppel samler det, ødelegger den lagrede tilstanden?
Hva skjer når du slår appen av listen?
Svarene
Android Enthusiast-bidragsyter Austin Mills tilbyr litt innsikt:
Swiping apps ut av den nyeste applisten er vanilje, og ja, ikke godt dokumentert. Dette har vært temaet for en anstendig mengde diskusjon på ulike Android fora ... konsensus synes å være best beskrevet her i noen kommentarer: at oppførelsen ligner på, men ikke akkurat det samme som å stenge en app - generelt (for apper som ikke definere eksplisitt tilbakekoblingshåndtering) det er det samme som å trykke nok tid fra et program som du går ut av det.
Lenken har noen flere detaljer om detaljene, men generelt kan du tenke på det som å avslutte søknaden.
Spesielt for Musikk-appen, tror jeg det starter en tjeneste, så selv om selve oppgaven (Musikk-appen / brukergrensesnittet) kan lukkes, fortsetter tjenesten å kjøre i bakgrunnen, slik at musikken din ikke stopper plutselig bare fordi oppgaven ble slettet for minnehensyn. Det kan ha påvirket det du så.
Da, Eldarerathis deltok i spørsmåls- og svarkredsen av livet, kom tilbake med egen forskning for å avrunde svaret:
Jeg ser ut til å ha funnet de magiske søkeordene som førte til noen forklaringer fra Google-ansatte. Spesielt fant jeg et par forskjellige steder der Dianne Hackborn forklarer hva som skjer når du slår noe ut av den siste listen. Den første er en kommentar til en av hennes innlegg på Google+:
[W] hatten skjer spesielt når du sveiper unna en nylig oppgave er det: (1) dreper noen bakgrunn eller tomme prosesser i applikasjonen (se her for hva dette betyr), og (2) bruker den nye API for å fortelle eventuelle tjenester av søknaden om oppgaven blir fjernet slik at den kan gjøre hva den mener er hensiktsmessig.
Hun noterer seg også i en bloggkommentar:
Faktisk vil fjerning av en oppføring i nyere oppgaver drepe eventuelle bakgrunnsprosesser som eksisterer for prosessen. Det vil ikke direkte føre til at tjenestene stopper, men det er en API for at de skal finne ut at oppgaven ble fjernet for å bestemme om de vil at dette skal bety at de skal stoppe. Dette er slik at fjerning sier den siste oppgaven med en e-postapp vil ikke føre til at den slutter å sjekke for e-post.
Hvis du virkelig vil helt stoppe en app, kan du lenge trykke på de siste oppgavene for å gå til appinfo, og slå kraftstopp der. Force stop er en fullstendig drep av appen - alle prosesser blir drept, alle tjenester stoppet, alle varslinger fjernet, alle alarmer fjernet, etc. Appen kan ikke starte igjen før eksplisitt forespurt.
Så det ser ut som sammendraget er at det å drepe en app ut av listen først dreper alle bakgrunnsprosesser for appen, bruk deretter
onTaskRemoved
å varsle appen om at bakgrunnsoppgaven ble fjernet. På det tidspunktet ser det ut til at det er opp til appen å bestemme hva som skjer, så jeg antar det teknisk er ikke en hard og rask regel om hva som skjer med appen utover det punktet.
Har du noe å legge til forklaringen? Lyde av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.