If-Koubou

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

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

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:

Viimeaikainen sovellusluettelo Ice Cream Sandwichissa lisäsi kykyä pyyhkiä sovellukset pois luettelosta, mikä hylkäsi ne pysyvästi (ja sikäli kuin tiedän, että tämä on vaniljatoiminto eikä CM / mukautettu ROM). Dokumentaation ja alustan kohokohdat eivät näytä kattavan tämän toiminnon alhaalta pudotusta, mutta olen utelias tietää, mitä järjestelmä todella tekee.

Lisäsin edelleen uteliaisuuteni, päätin tehdä nopean testin: Aloitin Musiikin CM9-asentimella, ja sitten taaksepäin. Sitten tarkistin viimeisimmän sovellusluettelon ja huomasin, että se oli todellakin siellä (ja oikeassa tilassa pikkukuvan perusteella). Sitten menin sisäänAsetukset-> Sovellukset 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:

Näyttäisin löytäneen maagisia hakutermejä, jotka johtivat Googlen työntekijöiden selityksiin. Erityisesti löysin pari eri paikkaa, joissa Dianne Hackborn selittää, mitä tapahtuu, kun pyyhkäisee jotain äskettäisestä listasta. Ensimmäinen on kommentti jollekin hänen Google+ -postistaan:

[W] hattu tapahtuu nimenomaan silloin, kun pyyhkiytät pois viimeaikaisen tehtävän, se on: (1) tappaa sovelluksen tausta- tai tyhjät prosessit (katso tästä, mitä tämä tarkoittaa), ja (2) käyttää uutta API: tä kertomaan sovellus siitä, että tehtävä on poistettu, jotta se voi tehdä mitä tahansa mielestäsi sopiva.

Hän huomauttaa myös blogikyselyssä:

Oikeastaan ​​viimeisten tehtävien merkinnän poistaminen haittaa prosessin olemassa olevat taustaprosessit. Se ei suoraan aiheuta palveluiden pysähtymistä, mutta on olemassa sovellusliittymä, jonka avulla ne voivat selvittää, että tehtävä poistettiin, jotta he voisivat päätellä, haluavatko he lopettaa. Tämä tarkoittaa sitä, että poistat sanovat, että sähköpostisovelluksen äskettäinen tehtävä ei aiheuta sen lopettamasta sähköpostien tarkistamista.

Jos haluat todella lopettaa sovelluksen kokonaan, voit painaa viimeaikaisia ​​tehtäviä pitkään painamalla app info -tiedostoa ja pysähtymään siellä. Force-pysäytys on sovelluksen täydellinen tappi - kaikki prosessit kuolevat, kaikki palvelut pysähtyvät, kaikki ilmoitukset poistetaan, kaikki hälytykset poistetaan jne. App ei saa käynnistää uudelleen, ennen kuin sitä pyydetään nimenomaisesti.

Joten, näyttää siltä, ​​että yhteenveto on, että pyyhkimällä sovellus pois luettelosta ensin tapetaan kaikki taustaprosessit app, sitten käyttääonTaskRemoved ilmoittamaan sovellukselle, että taustatehtävä poistettiin. Siinä vaiheessa näyttää siltä, ​​että sovellus päättää, mitä tapahtuu, joten luulen teknisestiei 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ä.