If-Koubou

Što se točno događa kada prebacujete aplikaciju za Android s popisa najnovijih aplikacija?

Što se točno događa kada prebacujete aplikaciju za Android s popisa najnovijih aplikacija? (Kako da)

Kada prstom prijeđete aplikaciju s popisa trenutačno pokrenutih aplikacija za Android, što se točno događa s aplikacijom i podacima? Pročitajte dalje dok istražujemo.

Današnja pitanja i odgovori nam se javljaju zahvaljujući Android Enthusiastu - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.

Pitanje

Čitač Androidovog entuzijasta Eldarerathis je znatiželjan o funkcionalnosti prskanja aplikacija koja vam omogućuje da podignete popis pokretnih aplikacija putem kućnog gumba, a zatim ih prebacite desno, vjerojatno da ih zatvorite:

Nedavni popis aplikacija u sladolednom sendviču dodao je mogućnost uklanjanja aplikacija iz popisa, tako da ih trajno odbacuju (i, koliko ja znam, ovo je funkcija vanilije, a ne CM / prilagođeni ROM). Dokumentacija i naglasci na platformama ne ukazuju na to da pokrivaju funkcionalnost ove funkcionalnosti, no znatiželjan sam znati što sustav zapravo radi.

Daljnjim dodavanjem moje znatiželje, odlučio sam napraviti brzu probnu verziju: pokrenuo sam Glazbu na CM9 instalaciji i potom izašao iz njega. Potom sam pregledao popis nedavnih aplikacija i vidio da je doista tamo (iu pravilnom stanju, na temelju sličice). Onda sam ušaoPostavke> Aplikacije a snaga je zaustavila aplikaciju Glazba, ali je i dalje bila navedena na nedavnom popisu, što me navelo da vjerujem da nije povezano s procesima koji su ostali u pozadini.

Shvativši da je Glazba možda bila loš izbor, također sam testirala s aplikacijom USA Today app. To je u osnovi pokazalo isto ponašanje, a činilo se kao da je prisiljeno "ponovno pokrenuti" nakon zaustavljanja sile (što ima smisla) iako je minijatura na nedavnoj popisu aplikacija ne odražavala ovo (spremljeno, pretpostavljam?).

Dakle, što se zapravo događa na razini OS kada prstom prijeđete aplikaciju iz nedavnog popisa? Je li jednostavno izbrisati podatke aplikacije iz RAM-a i smeće, prikupljajući je, uništavajući njegovo spremljeno stanje?

Što se točno događa kada prebacite aplikaciju s popisa?

Odgovori

Android entuzijast suradnik Austin Mills nudi neke uvid:

Brisanje aplikacija s nedavnog popisa aplikacija je vanilija, i da, nije dobro dokumentirano. Ovo je tema pristojne rasprave na raznim forumima za Android ... čini se da je konsenzus najbolje opisan ovdje u nekim komentarima: da je ponašanje slično, ali nije baš isto kao zatvaranje aplikacije - općenito (za aplikacije koje ne definirajte eksplicitno upravljanje natrag gumba) to je ista stvar kao što je udario dovoljno puta iz aplikacije da izađete iz nje.

Veza sadrži još pojedinosti o specifičnostima, ali sveukupno je možete smatrati odstupanjem od aplikacije.

Određenije za aplikaciju Glazba, vjerujem da započinje uslugu pa i sam zadatak (aplikacija za glazbu / korisničko sučelje) može biti zatvorena, usluga se nastavlja izvoditi u pozadini pa glazba ne odjednom prestaje samo zato što je zadatak riješen je zbog razloga za upravljanje memorijom. To je moglo utjecati na ono što ste vidjeli.

Zatim, sudjelujući u životnom ciklusu pitanja i odgovora, Eldarerathis se vratio s nekim vlastitim istraživanjima kako bi odgovorio:

Izgleda da sam pronašao čarobne pojmove za pretraživanje koji su doveli do nekih objašnjenja zaposlenika Googlea. Naime, pronašla sam nekoliko različitih mjesta gdje Dianne Hackborn objašnjava što se događa kad prijeđete nešto iz nedavnog popisa. Prvi je komentar jednog od svojih postova na usluzi Google+:

[W] šešir se posebno događa kada prebacujete van nedavnog zadatka je to: (1) ubija bilo koji pozadinski ili prazni proces aplikacije (vidi ovdje za što to znači), i (2) koristi novi API za reći bilo koju uslugu aplikacija o uklanjanju zadatka kako bi mogla učiniti sve što smatra odgovarajućom.

Napominje i komentar na blogu:

Zapravo, uklanjanje unosa u zadnjim zadacima ubiti će sve pozadinske procese koji postoje za taj proces. To neće izravno uzrokovati zaustavljanje usluga, no postoji API za njih da saznaju da je zadatak uklonjen da bi odlučili žele da to znači da bi trebali prestati. To znači da uklanjanje znači da nedavni zadatak aplikacije e-pošte neće uzrokovati zaustavljanje provjere e-pošte.

Ako zaista želite potpuno zaustaviti aplikaciju, možete dugo pritisnuti zadane zadatke da biste posjetili informacije o aplikaciji, a tamo ćete stati na zaustavljanje. Sila zaustavljanja potpuni je ubojstvo aplikacije - svi su procesi ubijeni, sve usluge prestane, sve uklonjene obavijesti, uklonjeni svi alarme i sl. Aplikacija se ne smije ponovno pokrenuti dok se to ne izričito zatraži.

Dakle, izgleda da je sažetak taj što prelijevanje aplikacije izvan popisa najprije će uništiti sve pozadinske procese za aplikaciju, a zatim upotrijebitionTaskRemoved obavijestiti aplikaciju da je pozadinska zadaća uklonjena. U tom trenutku izgleda da je na appu odlučiti što će se dogoditi, pa valjda postoje tehničkinije pravilno i brzo pravilo o tome što se događa s aplikacijom nakon te točke.

Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.