Što točno se događa kada Swipe Android App Od nedavnog Apps List?
Kada prebacite aplikaciju s popisa aplikacija koje trenutno rade na Androidu, što se točno događa s aplikacijom i podacima? Čitajte dalje dok istražujemo.
Današnja sesija pitanja i odgovora dolazi nam zahvaljujući usluzi Android Enthusiast - podjela Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.
Pitanje
Čitač za Android entuzijaste Eldarerathis je znatiželjan u vezi s funkcijom prebacivanja aplikacija koja vam omogućuje da povučete svoj popis pokrenutih aplikacija putem gumba za početnu stranicu, a zatim ih prebacite udesno, vjerojatno da biste ih zatvorili:
Nedavni popis aplikacija u Ice Cream Sandwichu dodao je mogućnost prebacivanja aplikacija s popisa, čime ih se trajno odbacuje (a koliko ja znam to je funkcija vanilije, a ne CM / custom ROM). Čini se da dokumentacija i vrhunci platforme ne pokrivaju funkcionalnosti ove funkcionalnosti ispod poklopca motora, ali mi je zanimljivo znati što sustav zapravo radi.
Nadalje, dodajući moju znatiželju, odlučio sam napraviti brzi test: pokrenuo sam glazbu na CM9 instalaciji, a zatim se povukao iz nje. Zatim sam provjerio popis nedavnih aplikacija i vidio da je doista tamo (iu ispravnom stanju, na temelju minijature). Tada sam ušao
Postavke> Aplikacije
i sila zaustavila aplikaciju Glazba, ali je još uvijek bila na popisu nedavnih, zbog čega sam vjerovao da nije povezan s procesima koji se zadržavaju u pozadini.Shvativši sada da je glazba možda bila loš izbor, također sam testirao s aplikacijom USA Today. To je u osnovi pokazivalo isto ponašanje, a činilo se da je bio prisiljen "ponovno pokrenuti" nakon zaustavljanja sile (što ima smisla) iako sličica u nedavnom popisu aplikacija nije odražavala ovo (spremljeno, pretpostavljam?).
Dakle, što se zapravo događa na razini OS-a kada prebacite aplikaciju iz nedavnog popisa? Da li je jednostavno izbrisati podatke iz RAM-a i sakupiti smeće, uništavajući njegovo spremljeno stanje?
Što se točno događa kada prebacite aplikaciju s popisa?
Odgovori
Suradnik za Android entuzijaste Austin Mills nudi uvid:
Prevlačenje aplikacija iz nedavnog popisa aplikacija je vanilija, i da, nije dobro dokumentirano. Ovo je bila tema pristojne diskusije na raznim forumima Androida… čini se da je konsenzus najbolje opisan ovdje u nekim komentarima: da je ponašanje slično, ali ne baš isto kao i zatvaranje aplikacije - općenito (za aplikacije koje ne definirajte eksplicitno rukovanje gumbom za povratak) to je ista stvar kao i kada se vratite dovoljno puta iz aplikacije koju iz nje izađete.
Veza ima još pojedinosti o pojedinostima, ali u cjelini možete je zamisliti kao prekid aplikacije.
Specifično za aplikaciju Glazba, vjerujem da pokreće uslugu, tako da, iako je zadatak (Glazbena aplikacija / UI) možda zatvoren, usluga se nastavlja prikazivati u pozadini, tako da se glazba ne zaustavlja samo zato što je zadatak dobio razjašnjenje zbog razloga za upravljanje memorijom. To je možda utjecalo na ono što ste vidjeli.
Zatim, sudjelujući u krugu pitanja i odgovora, Eldarerathis se vratio s nekim vlastitim istraživanjima kako bi zaokružio odgovor:
Čini se da sam pronašao čarobne pojmove za pretraživanje koji su doveli do nekih objašnjenja od Googleovih zaposlenika. Naime, pronašao sam nekoliko različitih mjesta na kojima Dianne Hackborn objašnjava što se događa kada povučete nešto iz nedavnog popisa. Prvi je komentar na jedan od njezinih postova na usluzi Google+:
[W] Što se posebno događa kada udaljite nedavni zadatak je: (1) ubija bilo koju pozadinu ili prazne procese aplikacije (pogledajte ovdje što to znači), i (2) koristi novi API za obavještavanje bilo koje usluge aplikaciju o zadatku koji je uklonjen kako bi mogao učiniti sve što smatra prikladnim.
Također bilježi u komentaru bloga:
Zapravo, uklanjanje unosa u nedavnim zadacima ubit će sve pozadinske procese koji postoje za taj proces. To neće izravno dovesti do zaustavljanja usluga, no postoji API za njih kako bi saznali da je zadatak uklonjen kako bi odlučili žele li to značiti da bi trebali prestati. To je tako da uklanjanje kaže da nedavni zadatak aplikacije za e-poštu neće uzrokovati da prestane provjeravati e-poštu.
Ako doista želite potpuno zaustaviti aplikaciju, možete dugo pritisnuti na nedavne zadatke da biste prešli na informacije o aplikaciji i zaustaviti snagu. Prisilno zaustavljanje je potpuno uništenje aplikacije - svi procesi su ubijeni, sve usluge zaustavljene, sva obavještenja uklonjena, svi alarmi uklonjeni, itd. Aplikaciji nije dopušteno ponovno pokretanje dok nije izričito zatraženo.
Dakle, čini se da sažetak znači da će povlačenje aplikacije s popisa prvo ubiti sve pozadinske procese za aplikaciju, a zatim upotrijebiti
onTaskRemoved
da obavijesti aplikaciju da je pozadinski zadatak uklonjen. U tom trenutku izgleda kao da je do aplikacije da odluči što će se dogoditi, pa pretpostavljam da tamo tehnički nije tvrdo i brzo pravilo o tome što se događa s aplikacijom izvan te točke.
Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.