9Aug

Hva skjer akkurat når du sveiper en Android-app fra den nyeste applisten?

Når du sveiper en app fra listen for Android-kjørende programmer, hva skjer med applikasjonen og dataene? Les videre når vi undersøker.

Dagens Spørsmål &Svarssesjon 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 lar deg trekke opp listen over kjørerapper via hjemmeknappen og deretter sveipe dem til høyre, antagelig å lukke dem:

Den nyeste applisten iIce Cream Sandwich la til evnen til å sveipe apps ut av listen, og dermed avvise dem permanent( og så langt jeg vet dette er en vanilje-funksjon, 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 å legge 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 applikasjonslisten og så det var faktisk der( og i riktig tilstand, basert på miniatyrbildet).Da gikk jeg inn i Innstillinger-> Programmer og tvang stoppet Musikk-appen, 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 akkurat når du sveiper appen fra listen?

Svarene

Android Enthusiast-bidragsyter Austin Mills tilbyr litt innsikt:

Swiping apps fra den nyeste applikasjonslisten 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 somikke definere eksplisitt tilbakekoblingshåndtering) det er det samme som å trykke nok tid fra et program som du går ut av det.

Koblingen har noen flere detaljer om detaljene, men generelt kan du tenke på det som å avslutte søknaden.

Spesifikt for Musikk-appen, tror jeg at den starter en tjeneste, så mens oppgaven selv( Musikk-appen / brukergrensesnittet) kan lukkes, fortsetter tjenesten å kjøre i bakgrunnen, slik at musikken din ikke plutselig stopper bare fordioppgaven ble slettet for minnehensyn. Det kan ha påvirket det du så.

Da deltok Eldarerathis i selve spørsmåls- og svarkredsen av livet, med egne undersøkelser for å avslutte svaret:

Jeg synes å 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 Google+ innlegg:

[W] -hatten skjer spesielt når du sveiper bort en nylig oppgave, er den:( 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 i applikasjonen 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 de siste oppgavene 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 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 stopp er en fullstendig drep av appen - alle prosesser blir drept, alle tjenester stoppet, alle meldinger fjernet, alle alarmer fjernet, etc. Appen kan ikke starte igjen før det er eksplisitt forespurt.

Så det ser ut til at sammendraget er at det å drepe en app ut av listen først dreper alle bakgrunnsprosesser for appen, og bruk deretter OnTaskRemoved til å 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 at det teknisk sett ikke er 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.