9Aug

Čo sa stane, keď prejdete cez aplikáciu Android z zoznamu posledných aplikácií?

Keď preskočíte aplikáciu zo zoznamu so systémom Android, ktorý práve prebieha, čo sa stane s aplikáciou a údajmi?Čítajte ďalej, keď prešetrujeme.

dnešná otázka &Odpoveď na zasadnutie nám prináša zdvorilosť entuziastu Android - podskupine Stack Exchange, komunitného zoskupenia webových stránok Q & A.

Otázka

Čítačka nadšencov Androidu Eldarerathis je zvedavá o funkcii, ktorá umožňuje presunúť zoznam bežiacich aplikácií pomocou tlačidla domov a potom ich posunúť doprava, pravdepodobne ich zatvoriť:

Zoznam nedávnych aplikácií vIce Cream Sandwich pridala možnosť vynechať aplikácie zo zoznamu, čím ich trvalo odmietla( a pokiaľ viem, je to funkcia vanilky, nie CM / vlastná ROM).Zdá sa, že dokumentácia a zdokonalenie platformy nepokrývajú fungovanie tejto funkcie pod kapotou, ale som zvedavý, aký systém skutočne robí.

Ďalej k mojej zvedavosti som sa rozhodol urobiť rýchly test: začal som hudbu na inštalácii CM9 a potom som sa vyhol. Potom som skontroloval posledný zoznam aplikácií a uvidel, že to bolo naozaj( a v správnom stave na základe miniatúry).Potom som sa dostal do aplikácie Nastavenia - & gt; Aplikácie a silu zastavil aplikáciu Hudba, ale bola stále uvedená v poslednom zozname, čo ma viedlo k presvedčeniu, že nie je spojená s procesmi, ktoré pretrvávajú v pozadí.

Uvedomte si teraz, že hudba bola pravdepodobne zlá voľba, tiež som testoval pomocou aplikácie USA Today. Toto malo v podstate rovnaké správanie a zdálo sa, že je po "silovom zastavení"( čo dáva zmysel) nútený k "opätovnému spusteniu", hoci miniatúra v poslednom zozname aplikácií to neodráža( v cache, hádam?).

Takže, čo sa vlastne deje na úrovni operačného systému pri prechádzaní aplikácie z posledného zoznamu? Je to jednoducho vymazať dáta aplikácie z RAM a odpadky zbierať, zničiť jeho uložený stav?

Čo sa práve deje pri prechádzaní aplikácie zo zoznamu?

Odpovede

prispievateľ Android enthusiast Austin Mills ponúka nejaký náhľad:

Presunutie aplikácií z posledného zoznamu aplikácií je vanilka a áno, nie je dobre zdokumentované.Toto bolo téma dôstojnej diskusie na rôznych fórach pre Android. .. zdá sa, že konsenzus je najlepšie opísaný v niektorých komentároch: že správanie je podobné, ale nie úplne rovnaké ako zatváranie aplikácie - vo všeobecnosti( pre aplikácie, ktorénedefinujte explicitné ovládanie tlačidla spätného chodu), je to isté ako zasiahnutie späť dostatok časov z aplikácie, ktorú z nej odídete.

Odkaz obsahuje niekoľko podrobností o špecifikách, ale celkovo to môžete považovať za ukončenie aplikácie.

Špecifické pre aplikáciu Hudba verím, že začína službu, takže zatiaľ čo samotná úloha( aplikácia Hudba / UI) môže byť zatvorená, služba bude naďalej bežať na pozadí, aby sa vaša hudba náhle zastavila len preto, žeúloha bola odstránená z dôvodov správy pamäte. To mohlo mať vplyv na to, čo ste videli.

Potom, keď sa Eldarerathis zúčastnil na kruhu otázok a odpovedí, vrátil sa s vlastným prieskumom:

Zdá sa, že som našiel magické hľadané výrazy, ktoré viedli k vysvetleniu od zamestnancov spoločnosti Google. Konkrétne som našiel niekoľko rôznych miest, kde Dianne Hackbornová vysvetľuje, čo sa stane, keď prehodíte niečo z posledného zoznamu. Prvým z nich je komentár k jednej z jej príspevkov v službe Google+:

[W] K tomu sa konkrétne deje pri nedodržaní nedávnej úlohy:( 1) zabije akékoľvek pozadie alebo prázdne procesy aplikácie( pozri to, čo to znamená)a( 2) používa nové rozhranie API na to, aby informovalo o všetkých službách aplikácie o odstránenej úlohe, takže môže robiť všetko, čo považuje za vhodné.

Ona tiež poznámky v komentári blogu:

Vlastne odstránenie záznamu v posledných úlohách zabije všetky procesy na pozadí, ktoré existujú pre proces. Nebude to priamo spôsobiť zastavenie služieb, avšak pre nich je API, aby zistili, že úloha bola odstránená, aby sa rozhodlo, či chcú, aby to znamenalo, že by mali prestať.To znamená, že odstránenie povedal, že nedávna úloha e-mailovej aplikácie neznemožní kontrolu e-mailu.

Ak chcete naozaj úplne zastaviť aplikáciu, môžete dlho stlačiť najnovšie úlohy a prejsť na informácie o aplikácii a stlačiť silu tam. Zastavenie platnosti je úplné zabitie aplikácie - všetky procesy sú zabité, všetky služby sú zastavené, všetky upozornenia odstránené, všetky odstránené alarmy atď. Aplikácia nesmie spustiť znova, kým ju explicitne nevyžiadate.

Zdá sa teda, že súhrn je, že presunutie aplikácie zo zoznamu najskôr zabije všetky procesy na pozadí aplikácie a potom použite onTaskRemoved na upozornenie aplikácie, že úloha na pozadí bola odstránená.V tom momente sa zdá, že je na aplikácii rozhodnúť, čo sa stane, takže myslím, že technicky nie je tvrdé a rýchle pravidlo o tom, čo sa stane s aplikáciou za týmto bodom.

Musíte niečo doplniť k vysvetleniu? Zvuk vypnúť v komentároch. Chcete si prečítať viac odpovedí od iných používateľov technológie Stack Exchange? Pozrite sa na celý diskusný príspevok tu.