Mitä oikein tapahtuu, kun pyyhkäisit Android-sovelluksen tuoreista sovellusluettelosta?
Kun pyyhkäisit sovelluksen Android-käynnissä olevien sovellusten luettelosta, mitä sovellukseen ja tietoihin tapahtuu? Lue, kun tutkimme.
Nykypäivän Kysymys- ja vastaus -istunto tulee meille Android Enthusiast-Stack Exchange -ryhmän, yhteisöpohjaisen Q & A-sivustojen ryhmittymän perusteella..
Kysymys
Android Enthusiast-lukija Eldarerathis on utelias app-pyyhkäisytoiminnosta, jonka avulla voit nostaa käynnissä olevien sovellusten luetteloa kotipainikkeella ja pyyhkäisemällä ne sitten oikealle, oletettavasti sulkeaksesi ne:
Tuoreiden sovellusten luettelo Ice Cream Sandwichissa lisäsi kykyä pyyhkiä sovelluksia pois luettelosta, jolloin heidät hylättiin pysyvästi (ja sikäli kuin tiedän, tämä on vaniljafunktio, ei CM / custom ROM). Asiakirjat ja alustan kohokohdat eivät näytä kattavan tämän toiminnon alittavaa toimintaa, mutta olen utelias tietämään, mitä järjestelmä todella tekee.
Lisäsin uteliaisuuteni, päätin tehdä nopean testin: käynnistin Music-ohjelman CM9-asennuksessa, ja sitten otin sen pois. Tarkistin sitten viimeisimpien sovellusten luettelon ja näin sen olevan (ja oikeassa tilassa pikkukuvan perusteella). Sitten menin
Asetukset-> Sovellukset
ja voima pysäytti musiikkisovelluksen, mutta se oli edelleen luettelossa viimeisimmässä luettelossa, mikä johti siihen, että se ei ole yhteydessä prosesseihin, jotka pysyvät taustalla.Ymmärrän nyt, että musiikki on ehkä ollut huono valinta, testasin myös USA Today -sovelluksella. Tämä näytti periaatteessa samaa käyttäytymistä, ja tuntui siltä, että se oli pakko "käynnistää uudelleen" sen jälkeen, kun voima pysähtyi (mikä on järkevää), vaikka viimeisimpien sovellusten luettelon pikkukuva ei heijastanut tätä (välimuistissa, olen arvaus?).
Joten, mitä todella tapahtuu OS-tasolla, kun pyyhkäisit sovelluksen pois viimeisestä luettelosta? Selvittääkö se yksinkertaisesti sovelluksen tiedot RAM-muistista ja roskat keräävät sen, tuhoamalla sen tallennetun tilan?
Mitä tapahtuu, kun pyyhkäisit sovelluksen luettelosta?
Vastaukset
Android Enthusiast-avustaja Austin Mills tarjoaa tietoa:
Pyyhkäisemällä sovellukset viimeisimmistä sovellusluetteloista on vaniljaa, ja kyllä, ei hyvin dokumentoitu. Tämä on ollut aiheellinen keskustelu erilaisista Android-foorumeista… yksimielisyys näyttäisi parhaiten kuvailevan tässä joissakin kommenteissa: että käyttäytyminen on samanlainen kuin sovelluksen sulkeminen - yleensä (sovelluksissa, jotka älä määrittele nimenomaista selauspainikkeen käsittelyä) se on sama asia, joka palaa tarpeeksi kertaa sovelluksesta, jonka poistut siitä.
Linkillä on joitakin yksityiskohtia, mutta yleisesti voit ajatella sitä lopettamalla sovelluksen.
Musiikkisovelluksen erityispiirteet, mielestäni se aloittaa palvelun, joten vaikka tehtävä itse (musiikkisovellus / käyttöliittymä) saattaa olla suljettu, palvelu toimii edelleen taustalla, jotta musiikkisi ei pysähdy yhtäkkiä vain siksi, että tehtävä on selvitettiin muistinhallinnan syistä. Se on saattanut vaikuttaa siihen, mitä olet nähnyt.
Sitten, Eldarerathis, joka osallistui kysymyksen ja vastauksen ympyrään, palasi omien tutkimustensa avulla vastaamaan:
Näyttää siltä, että löysin maagisen hakutermin, joka johti selityksiin Googlen työntekijöiltä. Erityisesti löysin pari erilaista paikkaa, joissa Dianne Hackborn kertoo, mitä tapahtuu, kun pyyhkäisyt jotain pois viimeisestä luettelosta. Ensimmäinen on kommentti jossakin hänen Google+ -viestinsä:
[W] hattu tapahtuu erityisesti, kun pyyhkäisette pois viimeisimmän tehtävän: (1) tappaa sovelluksen kaikki taustan tai tyhjät prosessit (katso tästä, mitä tämä tarkoittaa), ja (2) käyttää uutta API: ta kertomaan kaikista palveluista hakemuksen poistettavasta tehtävästä, jotta se voi tehdä sen, mitä se pitää sopivana.
Hän toteaa myös blogikommentissa:
Oikeastaan merkinnän poistaminen viimeisimmistä tehtävistä tappaa kaikki prosessin taustaprosessit. Se ei suoraan aiheuta palveluiden lopettamista, mutta niille on olemassa API, jonka avulla se voi selvittää, onko tehtävä poistettu päättääkseen, haluaako tämä sen, että heidän pitäisi lopettaa. Tämä on niin, että sähköpostiviestin sovelluksen viimeisimmän tehtävän poistaminen ei johda siihen, että se lopettaa sähköpostin tarkistamisen.
Jos haluat todella lopettaa sovelluksen, voit pitkään painaa viimeisimpiä tehtäviä siirtymällä sovellusinformaatioon ja napsauttamalla voimassa olevaa pysäytystä. Pakota pysäkki on sovelluksen täydellinen tappaminen - kaikki prosessit tapetaan, kaikki palvelut lopetetaan, kaikki ilmoitukset poistetaan, kaikki hälytykset poistetaan jne. Sovellus ei saa käynnistää uudelleen, ennen kuin nimenomaisesti pyydetään.
Joten näyttää siltä, että yhteenveto on, että sovelluksen pyyhkiminen luettelosta tappaa ensin sovelluksen kaikki taustaprosessit ja käytä sitten
onTaskRemoved
ilmoittaa sovellukselle, että taustatehtävä on poistettu. Silloin näyttää siltä, että sovelluksen tehtävä on päättää, mitä tapahtuu, joten luulen siellä teknisesti ei ole kova ja nopea sääntö siitä, mitä sovellukselle tapahtuu sen jälkeen.
Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.