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

Sadržaj:

Š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?
Anonim
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.
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:

The recent apps list in Ice Cream Sandwich added the ability to swipe apps out of the list, thereby dismissing them permanently (and as far as I know this is a vanilla function, not a CM/custom ROM one). The documentation and platform highlights don’t appear to cover the under-the-hood workings of this functionality, but I’m curious to know what the system is actually doing.

Further adding to my curiosity, I decided to do a quick test: I started up Music on a CM9 install, then backed out of it. I then checked the recent apps list and saw it was indeed there (and in the proper state, based on the thumbnail). I then went into

Settings->Applications

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:

I appear to have found the magical search terms that led to some explanations from Google employees. Specifically, I found a couple of different places where Dianne Hackborn explains what happens when you swipe something out of the recent list. The first is a comment on one of her Google+ posts:

[W]hat specifically happens when you swipe away a recent task is it: (1) kills any background or empty processes of the application (see here for what this means), and (2) uses the new API to tell any services of the application about the task being removed so it can do whatever it thinks is appropriate.

She also notes in a blog comment:

Actually, removing an entry in recent tasks will kill any background processes that exist for the process. It won’t directly causes services to stop, however there is an API for them to find out the task was removed to decide if they want this to mean they should stop. This is so that removing say the recent task of an e-mail app won’t cause it to stop checking for e-mail.

If you really want to completely stop an app, you can long press on recent tasks to go to app info, and hit force stop there. Force stop is a complete kill of the app - all processes are killed, all services stopped, all notifications removed, all alarms removed, etc. The app is not allowed to launch again until explicitly requested.

So, it looks like the summary is that swiping an app out of the list will first kill all background processes for the app, then use

onTaskRemoved

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čki nije 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.

Preporučeni: