Mis täpselt juhtub, kui pühkite Android Appit värskete rakenduste loendist?
Kui tõmmate rakenduse Android-i jooksvate rakenduste loendist alla, siis mis täpselt juhtub rakenduse ja andmetega? Lugege edasi, kui uurime.
Tänane küsimuste ja vastuste seanss saabub meiega Android Enthusiast-Stack Exchange'i allüksuse, kogukonnapõhise Q & A-veebisaitide rühmituse alusel.
Küsimus
Android Enthusiast lugeja Eldarerathis on uudishimulik app-swipe-funktsiooni kohta, mis võimaldab teil käivitada rakenduste nimekirja oma nuppude abil ja seejärel pühkida neid paremale, eeldatavasti nende sulgemiseks:
Viimaste rakenduste loend Ice Cream Sandwichi lisandis võime tõmmata rakendusi nimekirjast välja, jättes need püsivalt maha (ja niipalju kui mina tean, et see on vanillifunktsioon, mitte CM / custom ROM). Dokumendid ja platvormi esiletõstmised ei näi katvat selle funktsiooni alumist tööd, kuid ma olen uudishimulik, mida süsteem tegelikult teeb.
Edasi lisandudes oma uudishimu, otsustasin ma teha kiire testi: alustasin muusikat CM9 installeerimisega, seejärel toetasin sellest välja. Siis kontrollisin ma viimaste rakenduste nimekirja ja nägin, et see oli tõepoolest seal (ja pisipildil õiges olekus). Siis läksin
Seadistused-> Rakendused
ja jõud peatas rakenduse Muusika, kuid see oli ikka veel viimases nimekirjas, viies mind uskuma, et see ei ole seotud protsessidega, mis on taustal püsinud.Mõistes nüüd, et muusika võib olla halb valik, testisin ma ka USA tänase rakendusega. See eksponeeris põhimõtteliselt sama käitumist ja tundus, et ta oli sunnitud „taaskäivitama” pärast jõu peatamist (mis on mõistlik), kuigi viimaste rakenduste loendi pisipilt ei peegeldanud seda (vahemällu, ma arvan?).
Niisiis, mis tegelikult juhtub OS-i tasandil, kui pühkite rakendust viimasest loendist välja? Kas see lihtsalt kustutab rakenduse andmed RAM-ist ja prügi kogub, hävitades salvestatud oleku?
Mis juhtub siis, kui rakendust loendist eemaldate?
Vastused
Android Enthusiast toetaja Austin Mills pakub mõningast arusaama:
Uute rakenduste loendist väljaminevate rakenduste pühkimine on vanilje ja jah, ei ole hästi dokumenteeritud. See on olnud teemade korraliku arutelu teema mitmesugustel Android foorumitel ... konsensus tundub siin kõige paremini kirjeldatuna mõnedes kommentaarides: et käitumine on sarnane, kuid mitte täpselt sama, mis rakenduse sulgemine - üldiselt (rakenduste puhul, mis ärge määratlege selgesõnalist tagasi-nupu käsitsemist) see on sama asi, mis tõmbab piisavalt aega tagasi rakendusest, millest sa sellest väljuvad.
Lingil on mõned üksikasjad spetsiifika kohta, kuid üldiselt võite seda mõelda rakendusest loobumisel.
Muusika rakenduse jaoks on minu arvates teenus käivitatud, nii et kui ülesanne ise (muusika rakendus / kasutajaliides) võib olla suletud, töötab teenus jätkuvalt taustal, nii et teie muusika ei katkesta järsult lihtsalt sellepärast, et ülesanne mälu haldamise põhjustel. See võib olla mõjutanud seda, mida sa nägid.
Seejärel osales Eldarerathis küsitlus- ja vastusringis, kus ta sai oma uurimustööga vastuse:
Näib, et leidsin maagilised otsingusõnad, mis viisid Google'i töötajatele mõned selgitused. Täpsemalt, ma leidsin paar erinevat kohta, kus Dianne Hackborn selgitab, mis juhtub, kui pühkite midagi viimasest nimekirjast välja. Esimene on kommentaar mõnele tema Google+ postitustele:
[W] müts konkreetselt juhtub hiljutise ülesande pühkimise korral: (1) tapab kõik rakenduse taust- või tühjad protsessid (vaata siit, mida see tähendab) ja (2) kasutab uut API-d, et öelda mis tahes teenust rakenduse kohta, mis puudutab eemaldatavat ülesannet, et ta saaks teha kõik, mida ta peab asjakohaseks.
Ta märgib ka blogi kommentaaris:
Tegelikult tapab viimastes ülesannetes kirjete eemaldamine kõik protsessi protsessid. See ei põhjusta otseselt teenuste peatamist, kuid nende jaoks on olemas API, mis selgitab, et ülesanne on eemaldatud, et otsustada, kas nad tahavad, et see tähendaks nende lõpetamist. See on nii, et e-posti rakenduse viimaste ülesannete eemaldamine ei põhjusta selle e-posti kontrollimise lõpetamist.
Kui sa tõesti tahad rakenduse täielikult lõpetada, saate kaua vajuda viimastele ülesannetele, et minna rakenduse info juurde ja jõuab jõudu peatada. Force stop on rakenduse täielik tapmine - kõik protsessid surmatakse, kõik teenused peatatakse, kõik teated eemaldatakse, kõik häired eemaldatakse jne. Rakendust ei lubata uuesti käivitada enne, kui on selgesõnaliselt nõutud.
Niisiis tundub, et kokkuvõte on see, et rakenduse nimekirjast eemaldamine tapab kõigepealt rakenduse kõik taustaprotsessid, seejärel kasuta
onTaskRemoved
teatama rakendusele, et taustaprojekt on eemaldatud. Sel hetkel tundub, et see on rakenduse otsustada, mis juhtub, nii et ma arvan seal tehniliselt ei ole raske ja kiire reegel selle kohta, mis juhtub rakendusega pärast seda punkti.
Kas teil on midagi lisada selgitusele? Hääletage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.