Mitä oikein tapahtuu, kun pyyhkäisät Android-sovelluksen viimeisimmistä sovellusluettelosta?

Sisällysluettelo:

Mitä oikein tapahtuu, kun pyyhkäisät Android-sovelluksen viimeisimmistä sovellusluettelosta?
Mitä oikein tapahtuu, kun pyyhkäisät Android-sovelluksen viimeisimmistä sovellusluettelosta?

Video: Mitä oikein tapahtuu, kun pyyhkäisät Android-sovelluksen viimeisimmistä sovellusluettelosta?

Video: Mitä oikein tapahtuu, kun pyyhkäisät Android-sovelluksen viimeisimmistä sovellusluettelosta?
Video: Kaldheim découverte et explications cartes rouges, vertes, multicolores, mtg, magic the gathering ! - YouTube 2024, Huhtikuu
Anonim
Kun poistat sovelluksen Android-sovelluksen nykyisen sovellusluettelon käytöstä, mikä tapahtuu sovelluksen ja tietojen kanssa? Lue, kun tutkitaan.
Kun poistat sovelluksen Android-sovelluksen nykyisen sovellusluettelon käytöstä, mikä tapahtuu sovelluksen ja tietojen kanssa? Lue, kun tutkitaan.

Tämän päivän kysymys- ja vastausistunto tulee meihin kohtelias Android Enthusiast -yhteisön ohjaama Stack Exchange -ryhmä, joka on Q & A-sivustojen ryhmittely.

Kysymys

Android Enthusiast-lukija Eldarerathis on utelias app-swipe -toiminnosta, jonka avulla voit vetää listan käynnissä olevista sovelluksista kotipainikkeella ja pyyhkäistä ne sitten oikealle, oletettavasti sulkemalla ne:

The recent apps list in Ice Cream Sandwich added the ability to swipe apps out of the list, thereby dismissing them permanently (and as far as I know this is a vanilla function, not a CM/custom ROM one). The documentation and platform highlights don’t appear to cover the under-the-hood workings of this functionality, but I’m curious to know what the system is actually doing.

Further adding to my curiosity, I decided to do a quick test: I started up Music on a CM9 install, then backed out of it. I then checked the recent apps list and saw it was indeed there (and in the proper state, based on the thumbnail). I then went into

Settings->Applications

ja voima lopetti Music-sovelluksen, mutta se oli edelleen luettelossa viimeisimmässä luettelossa, mikä johti siihen, että se ei liity taustalla oleviin prosesseihin.

Realisoimalla nyt, että Musiikki on saattanut olla huono valinta, testasin myös USA Today app. Tämä näytti periaatteessa saman käyttäytymisen, ja näytti siltä, että se oli pakotettu "uudelleen käynnistämään" voima-aseman lopettamisen jälkeen (mikä on järkevää), vaikka äskettäisen sovellusluettelon pikkukuva ei vastannut tätä (välimuistissa, minä arvailen?).

Joten, mitä käytännössä tapahtuu OS-tasolla, kun pyyhkäistät sovelluksen pois viimeisimmistä luettelosta? Poistaako yksinkertaisesti sovelluksen tiedot RAM-muistista ja roskat keräävät sen tuhoamalla sen tallennetun tilan?

Mitä tapahtuu juuri silloin, kun pyyhkäise sovellus pois luettelosta?

Vastaukset

Android harrastaja Austin Mills tarjoaa tietoa:

Sovellusten pyyhkiminen viimeisimmistä sovellusluettelosta on vanilja, ja kyllä, ei hyvin dokumentoitu. Tämä on ollut aiheena ihmisarvoisen paljon keskustelua eri Android-foorumeista … konsensus näyttää parhaiten kuvattu tässä muutamassa kommentissa: että käyttäytyminen on samanlainen kuin täsmälleen sama kuin sovelluksen sulkeminen (sovellukset, jotka älä määritä eksplisiittistä takaisinpainikkeen käsittelyä) on sama asia kuin lyödä takaisin tarpeeksi aikaa sovelluksen sisällä, josta poistut siitä.

Linkillä on joitakin yksityiskohtia yksityiskohtiin, mutta kaiken kaikkiaan voit ajatella sitä lopettamatta sovellusta.

Musiikkisovelluksen erityispiirteet mielestäni se käynnistää palvelun, joten vaikka itse tehtävä (musiikkisovellus / käyttöliittymä) voi olla suljettu, palvelu toimii edelleen taustalla niin, että musiikki ei yhtäkkiä pysähdy vain, koska tehtävä poistui muistinhallinnan syistä. Tämä voi vaikuttaa siihen, mitä näit.

Sitten osallistuessaan elämän kysymys- ja vastauspiiriin, Eldarerathis palasi jonkin verran oman tutkimuksensa kanssa, joka kattoi vastauksen:

I appear to have found the magical search terms that led to some explanations from Google employees. Specifically, I found a couple of different places where Dianne Hackborn explains what happens when you swipe something out of the recent list. The first is a comment on one of her Google+ posts:

[W]hat specifically happens when you swipe away a recent task is it: (1) kills any background or empty processes of the application (see here for what this means), and (2) uses the new API to tell any services of the application about the task being removed so it can do whatever it thinks is appropriate.

She also notes in a blog comment:

Actually, removing an entry in recent tasks will kill any background processes that exist for the process. It won’t directly causes services to stop, however there is an API for them to find out the task was removed to decide if they want this to mean they should stop. This is so that removing say the recent task of an e-mail app won’t cause it to stop checking for e-mail.

If you really want to completely stop an app, you can long press on recent tasks to go to app info, and hit force stop there. Force stop is a complete kill of the app - all processes are killed, all services stopped, all notifications removed, all alarms removed, etc. The app is not allowed to launch again until explicitly requested.

So, it looks like the summary is that swiping an app out of the list will first kill all background processes for the app, then use

onTaskRemoved

ilmoittamaan sovellukselle, että taustatehtävä poistettiin. Siinä vaiheessa näyttää siltä, että sovellus päättää, mitä tapahtuu, joten luulen teknisesti ei ole vaikea ja nopea sääntö siitä, mitä sovellukselle tapahtuu sen jälkeen.

Onko jokin asia lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä? Katso koko keskusteluketju täältä.

Suositeltava: