Когато прекарате пръст от приложението си от списъка си с Android в момента, какво точно се случва с приложението и данните? Прочетете нататък, докато разследваме.
Днешната сесия за въпроси и отговори ни идва от любезното съдействие на Android Enthusiast - подразделение на Stack Exchange - общността, управлявана от общността, на уеб сайтове за Q & A.
Читателят на ентусиасти на Android Eldarerathis е любопитен за функцията за приплъзване на приложения, която ви позволява да извадите списъка си с изпълнявани приложения чрез бутона за дома и след това да ги преместите надясно, вероятно да ги затворите:
Последният списък с приложения в Ice Cream Sandwich добави възможността да измъкнем от списъка изброените приложения, като по този начин ги отхвърлим трайно (и доколкото ми е известно, това е функция на ванила, а не CM / custom ROM). Документацията и акцентите на платформата не изглежда да покриват работата на тази функционалност под капака, но съм любопитен да знам какво всъщност прави системата.
Освен това, добавяйки към моето любопитство, реших да направя бърз тест: започнах да пускам музика на инсталатора CM9, след това се оттеглих от него. След това проверих списъка с последните приложения и видях, че наистина е там (и в правилното състояние, въз основа на миниатюрата). Тогава влязох
Настройки-> Приложения
и сила спря приложението Музика, но все още беше включена в списъка на последните, което ме накара да вярвам, че не е свързано с процеси, останали на заден план.Осъзнавайки, че Музиката може да е лош избор, тествах и с приложението USA Today. Това показваше по същество същото поведение и изглеждаше, че е принуден да "поднови" след спирането на силата (което има смисъл), въпреки че миниатюрата в списъка с последните приложения не отразява това (кеширана, предполагам?).
И така, какво се случва на ниво операционна система, когато преместите едно приложение от последния списък? Просто изчиства ли данните от приложението от RAM и боклукът го събира, унищожавайки запазеното му състояние?
Какво точно се случва, когато преместите приложението от списъка?
Андроиден ентусиаст сътрудник Остин Милс предлага някои прозрение:
Премахването на приложения от списъка с последните приложения е ванилия и не е добре документирана. Това е тема на приличен обем дискусии по различни форуми за Android ... консенсусът изглежда е най-добре описан тук в някои коментари: че поведението е подобно, но не съвсем същото като затварянето на приложение - като цяло (за приложения, които не дефинирайте изрично обръщане на бутоните) е същото нещо като удрянето достатъчно пъти от приложението, което излизате извън него.
Връзката има някои повече подробности за спецификата, но като цяло можете да мислите за това като отказ от приложението.
Специфични за приложението Музика, аз вярвам, че той стартира услуга, така че докато самата задача (приложението / потребителското приложение за музика) може да бъде затворена, услугата продължава да се изпълнява на заден план, така че музиката ви да не спира изведнъж само защото задачата са изчистени заради причини за управление на паметта. Това може да е повлияло на това, което сте видели.
След това, участвайки в кръга от въпроси и отговори на живота, Елдарератис се върна със свои собствени изследвания, за да отвърне на въпроса:
Изглежда, че съм намерил магическите думи за търсене, довели до някои обяснения от служителите на Google. По-конкретно намерих няколко различни места, където Даян Хакборн обяснява какво се случва, когато измъквате нещо от последния списък. Първият е коментар на една от публикациите й в Google+:
[W] конкретно се случва, когато преместите отстрани една скорошна задача: (1) убива всеки фон или празни процеси на приложението (вижте какво означава това) и (2) използва новия API, за да каже каквито и да е услуги от приложението за премахването на задачата, за да може да направи каквото си мисли, че е подходящо.
Тя също отбелязва в коментар в блога:
Всъщност премахването на запис в последните задачи ще унищожи всички съществуващи процеси на заден план. Това няма да доведе директно до спиране на услугите, но има API, за да разберат, че задачата е премахната, за да реши дали искат това да означава, че трябва да спрат. Това е така, че премахването да каже, че последната задача на приложение за електронна поща няма да го накара да спре да проверява за електронна поща.
Ако наистина искате напълно да спрете приложение, можете дълго да натиснете последните задачи, за да отидете на информация за приложението и да натиснете силата да спрете там. Спирането на действието е пълно унищожаване на приложението - всички процеси са загинали, всички услуги са прекратени, всички известия са премахнати, всички аларми са премахнати и т.н. Приложението не може да се стартира отново, докато не бъде изрично поискано.
Така изглежда, обобщението е, че преливането на приложение извън списъка първо ще унищожи всички фонови процеси за приложението, след което ще използва
onTaskRemoved
да уведоми приложението, че фоновата задача е премахната. В този момент изглежда, че зависи от приложението да решава какво се случва, така че предполагам, че има техническине е трудно и бързо правило за това, което се случва с приложението отвъд тази точка.
Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.