Какво точно се случва, когато преместите едно от приложенията за Android от последния списък с приложения?

Съдържание:

Какво точно се случва, когато преместите едно от приложенията за Android от последния списък с приложения?
Какво точно се случва, когато преместите едно от приложенията за Android от последния списък с приложения?
Anonim
Когато прекарате пръст от приложението си от списъка си с Android в момента, какво точно се случва с приложението и данните? Прочетете нататък, докато разследваме.
Когато прекарате пръст от приложението си от списъка си с Android в момента, какво точно се случва с приложението и данните? Прочетете нататък, докато разследваме.

Днешната сесия за въпроси и отговори ни идва от любезното съдействие на Android Enthusiast - подразделение на Stack Exchange - общността, управлявана от общността, на уеб сайтове за Q & A.

Въпроса

Читателят на ентусиасти на Android Eldarerathis е любопитен за функцията за приплъзване на приложения, която ви позволява да извадите списъка си с изпълнявани приложения чрез бутона за дома и след това да ги преместите надясно, вероятно да ги затворите:

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

и сила спря приложението Музика, но все още беше включена в списъка на последните, което ме накара да вярвам, че не е свързано с процеси, останали на заден план.

Осъзнавайки, че Музиката може да е лош избор, тествах и с приложението USA Today. Това показваше по същество същото поведение и изглеждаше, че е принуден да "поднови" след спирането на силата (което има смисъл), въпреки че миниатюрата в списъка с последните приложения не отразява това (кеширана, предполагам?).

И така, какво се случва на ниво операционна система, когато преместите едно приложение от последния списък? Просто изчиства ли данните от приложението от RAM и боклукът го събира, унищожавайки запазеното му състояние?

Какво точно се случва, когато преместите приложението от списъка?

Отговорите

Андроиден ентусиаст сътрудник Остин Милс предлага някои прозрение:

Премахването на приложения от списъка с последните приложения е ванилия и не е добре документирана. Това е тема на приличен обем дискусии по различни форуми за Android … консенсусът изглежда е най-добре описан тук в някои коментари: че поведението е подобно, но не съвсем същото като затварянето на приложение - като цяло (за приложения, които не дефинирайте изрично обръщане на бутоните) е същото нещо като удрянето достатъчно пъти от приложението, което излизате извън него.

Връзката има някои повече подробности за спецификата, но като цяло можете да мислите за това като отказ от приложението.

Специфични за приложението Музика, аз вярвам, че той стартира услуга, така че докато самата задача (приложението / потребителското приложение за музика) може да бъде затворена, услугата продължава да се изпълнява на заден план, така че музиката ви да не спира изведнъж само защото задачата са изчистени заради причини за управление на паметта. Това може да е повлияло на това, което сте видели.

След това, участвайки в кръга от въпроси и отговори на живота, Елдарератис се върна със свои собствени изследвания, за да отвърне на въпроса:

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

да уведоми приложението, че фоновата задача е премахната. В този момент изглежда, че зависи от приложението да решава какво се случва, така че предполагам, че има технически не е трудно и бързо правило за това, което се случва с приложението отвъд тази точка.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.

Препоръчано: