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

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

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

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

    Въпроса

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

    Неотдавнашният списък с приложения в Ice Cream Sandwich добави възможността да премествате приложения от списъка, като по този начин ги отхвърляте завинаги (и доколкото знам, това е функция на ванилия, а не CM / custom ROM). Документацията и основните характеристики на платформата не изглежда да покриват работата на тази функционалност, но аз съм любопитен да разбера какво всъщност прави системата.

    Освен това добавих към любопитството си, реших да направя бърз тест: стартирах Музиката на CM9 инсталация, след което се отдръпнах. След това проверих списъка с последните приложения и видях, че наистина е там (и в правилното състояние, въз основа на миниатюрата). Тогава влязох Настройки-> Приложения и сила спря приложението Музика, но все още бе включено в списъка с последните, което ме накара да повярвам, че не е свързан с процеси, задържащи се във фонов режим.

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

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

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

    Отговорите

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

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

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

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

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

    Изглежда открих, че магическите думи за търсене са довели до някои обяснения от служители на Google. По-конкретно, намерих няколко различни места, където Даян Хакборн обяснява какво се случва, когато прокараш нещо от последния списък. Първият е коментар за едно от нейните публикации в Google+:

    [W] шапка специално се случва, когато плъзнете далеч последната задача е тя: (1) убива всички фон или празни процеси на приложението (вижте тук за това, което това означава), и (2) използва новия API, за да разкажа на всички услуги на заявлението за отстраняването на задачата, за да може да прави каквото си мисли, че е подходящо.

    Тя също отбелязва в коментар в блога:

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

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

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


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