Kas tiksliai atsitinka, kai "Android" programą išskleidžiate iš nesenų programų sąrašo?

Turinys:

Kas tiksliai atsitinka, kai "Android" programą išskleidžiate iš nesenų programų sąrašo?
Kas tiksliai atsitinka, kai "Android" programą išskleidžiate iš nesenų programų sąrašo?

Video: Kas tiksliai atsitinka, kai "Android" programą išskleidžiate iš nesenų programų sąrašo?

Video: Kas tiksliai atsitinka, kai
Video: Microsoft password reset: How to reset forgotten Microsoft account password in windows 10/laptop pc - YouTube 2024, Balandis
Anonim
Kai išbraukite programą iš "Android" šiuo metu veikiančių programų sąrašo, kas tiksliai atsitinka su programa ir duomenimis? Perskaitykite, kaip mes tiriame.
Kai išbraukite programą iš "Android" šiuo metu veikiančių programų sąrašo, kas tiksliai atsitinka su programa ir duomenimis? Perskaitykite, kaip mes tiriame.

Šiandienos klausimų ir atsakymų sesija ateina į mus su "Android Enthusiast" - "Stack Exchange", bendruomenės orientuoto Q & A grupių asociacija.

Klausimas

"Android" "Enthusiast" skaitytojas "Eldarerathis" smalsu apie "programos" spustelėjimo funkciją, kurią naudojant galite nuvilkti savo programų sąrašą naudodami namų mygtuką, tada perbraukite juos į dešinę, tikriausiai uždarykite juos:

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

ir priversti sustabdyti "Music" programą, bet ji vis dar buvo nurodyta paskutiniame sąraše, todėl manau, kad jis nesusijęs su procesais, kurie yra fone.

Įsivaizduojant, kad dabar muzika buvo prastas pasirinkimas, aš taip pat išbandžiau su "USA Today" programa. Tai parodė iš esmės tą patį elgesį, ir atrodė, kad jis buvo priverstas "iš naujo paleisti" po jėgos sustabdymo (o tai yra prasminga), nors paskutiniųjų programų sąrašo miniatiūra tai neatspindėjo (talpykloje, aš spėju?).

Taigi, kas iš tikrųjų atsitinka OS lygmenyje, jei perbraukite programą iš paskutinio sąrašo? Ar tai paprasčiausiai išvalo app duomenis iš RAM ir šiukšliadėžė ją surenka, sunaikindama išsaugotą būseną?

Kas tiksliai vyksta, kai išbraukite programą iš sąrašo?

Atsakymai

"Android Enthusiast" autorius Austin Mills siūlo keletą įžvalgų:

"Swiping" programos iš nesenų programų sąrašo yra vanilės ir taip, nėra gerai dokumentuojamos. Tai buvo tinkamo diskusijų apie įvairius "Android" forumus tema … atrodo, kad geriausiai čia yra keletas komentarų, kad elgesys yra panašus, bet ne tas pats, kaip uždaryti programą - apskritai (programoms, kurios neapibrėžkite tiesioginio grįžimo mygtuko tvarkymo) tai yra tas pats dalykas, kuris nukrenta pakankamai laiko iš programos, kurią išeinate iš jos.

Nuoroda turi keletą papildomų detalių apie specifines savybes, tačiau apskritai galvojate apie tai kaip apie paraiškos atsisakymą.

Manau, kad ji pradeda paslaugą, taigi, nors pati užduotis (muzikos programa / vartotojo sąsaja) gali būti uždaryta, paslauga ir toliau veikia fone, kad jūsų muzika staiga nesustotų, nes užduotis buvo išvalyta dėl atminties valdymo priežasčių. Tai galėjo turėti įtakos tai, ką matėte.

Tada, dalyvaudama gyvenimo klausimo ir atsakymo apskritime, Eldarerathis sugrįžo su savo tyrimu, kad išskaidytų atsakymą:

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

pranešti programai, kad fono užduotis buvo pašalinta. Tuo metu atrodo, kad programa nusprendžia, kas atsitiks, todėl manau, kad tai techniškai nėra griežta taisyklė apie tai, kas nutinka programai.

Ar turite ką nors įtraukti į paaiškinimą? Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų? Patikrinkite visą diskusijų temą čia.

Rekomenduojamas: