Kas atsitinka, kai „Android“ programą perkeliate iš naujausių programų sąrašo?
Kai nuvilkiate programą „Android“ šiuo metu veikiančių programų sąraše, kas tiksliai atsitinka su programa ir duomenimis? Skaitykite, kai mes tiriame.
Šiandienos „Klausimų ir atsakymų“ sesijos metu mes galime džiaugtis „Android Enthusiast“ - „Stack Exchange“ padaliniu, bendruomenės sukurtomis „Q&A“ svetainių grupėmis.
Klausimas
„Android Enthusiast“ skaitytojas „Eldarerathis“ smalsu apie „app-swipe“ funkciją, kuri leidžia ištraukti rodomų programų sąrašą per pradžios mygtuką ir tada nuvilkite juos į dešinę, tikriausiai juos uždaryti:
Naujausiame „Ice Cream Sandwich“ programų sąraše pridėta galimybė išbraukti programas iš sąrašo, tokiu būdu juos visam laikui atmetant (ir, kiek žinau, tai vanilės funkcija, o ne CM / custom ROM). Dokumentai ir platformos akcentai neatrodo, kad apimtų šio funkcionalumo veikimą, bet aš smalsu žinoti, ką veikia sistema.
Toliau prisidėdamas prie mano smalsumo, nusprendžiau atlikti greitą testą: paleidžiau „Music“ į „CM9“ diegimą, o tada iš jo pašalinau. Tada patikrinau naujausių programų sąrašą ir pamatiau, kad jis iš tikrųjų buvo (ir tinkama būsena, remiantis miniatiūra). Tada nuėjau
Parametrai-> Programos
ir jėga sustabdė „Music“ programą, tačiau ji vis dar buvo įtraukta į naujausią sąrašą, todėl manau, kad tai nėra susijusi su procesais, kurie išlieka fone.Suprasdami, kad muzika galėjo būti prasta pasirinktis, aš taip pat išbandžiau su „USA Today“ programa. Tai iš esmės buvo toks pat elgesys, ir atrodė, kad jis buvo priverstas „iš naujo paleisti“ po to, kai jėgos sustabdymas (kuris yra prasmingas), nors pastarųjų programų sąrašo miniatiūra tai neatspindėjo (talpykloje, aš spėju?).
Taigi, kas iš tikrųjų atsitinka OS lygiu, kai braukiate programą iš paskutinio sąrašo? Ar ji tiesiog išvalo programos duomenis iš atminties ir šiukšlių surinkimo, sunaikindamos išsaugotą būseną?
Kas tiksliai vyksta, kai nuvilkiate programą iš sąrašo?
Atsakymai
„Android“ entuziastų autorius Austin Mills siūlo šiek tiek įžvalgų:
Iš naujausių programų sąrašo esančių programų nuvilkimas yra vanilė ir taip, nėra gerai dokumentuota. Tai buvo tinkamo dydžio diskusijų tema įvairiuose „Android“ forumuose ... atrodo, kad konsensusas čia geriausiai apibūdinamas kai kuriose pastabose: kad elgesys yra panašus į „uždarymo“ programą apskritai (ne visai panašiai) neapibrėžkite aiškios nugaros mygtuko tvarkymo) tas pats dalykas, kaip ir paspaudus pakankamai kartų iš programos, kurią išeinate iš jos.
Nuoroda turi daugiau informacijos apie specifiką, tačiau apskritai jūs galite galvoti apie tai, kaip išeiti iš programos.
Speciali muzikos programai, manau, ji pradeda paslaugą, todėl, nors pati užduotis (muzikos programa / UI) gali būti uždaryta, paslauga ir toliau veikia fone, kad jūsų muzika staiga nesustotų tik dėl to, kad užduotis išsiaiškinta dėl atminties valdymo priežasčių. Tai galėjo paveikti tai, ką matėte.
Tada, dalyvaudamas klausimo ir atsakymo gyvenimo rate, Eldarerathis grįžo su tam tikrais tyrimais, kad apvalintų atsakymą:
Atrodo, kad rado stebuklingų paieškos terminų, dėl kurių paaiškėjo „Google“ darbuotojai. Konkrečiai, aš rasiu keletą skirtingų vietų, kur Dianne Hackborn paaiškina, kas atsitinka, kai nuvilkiate ką nors iš naujausio sąrašo. Pirmasis yra komentaras dėl vieno iš jo „Google+“ įrašų:
[W] kepurė konkrečiai atsitinka, kai nuvilkiate paskutinę užduotį: (1) nužudo bet kokį programos foną ar tuščius procesus (žr. Čia, ką tai reiškia), ir (2) naudoja naują API, kad praneštų bet kokias paslaugas paraiška apie užduotį, kad ji galėtų padaryti viską, kas, jos manymu, yra tinkama.
Be to, ji komentaro dienoraščio komentarą:
Tiesą sakant, įrašo pašalinimas naujausiose užduotyse bus nužudyti visi procesui būdingi foniniai procesai. Ji nesukels tiesioginių paslaugų sustabdymo, tačiau yra API, leidžianti jiems išsiaiškinti, ar užduotis buvo pašalinta, kad nuspręstų, ar jie nori, kad tai reikštų, kad jie turėtų sustoti. Tai reiškia, kad pašalinus pasakyti, kad naujausia el. Pašto programos užduotis nebus sustabdytas el. Pašto tikrinimas.
Jei tikrai norite visiškai sustabdyti programą, galite ilgai paspausti naujausias užduotis, kad eitumėte į programos informaciją, ir paspauskite jėgą sustabdyti ten. Priverstinis sustabdymas yra visiškas programos nužudymas - visi procesai nužudomi, visos paslaugos sustabdytos, visi pranešimai pašalinami, visi pavojaus signalai pašalinami ir pan..
Taigi, atrodo, kad santrauka yra tai, kad išbraukiant programą iš sąrašo, visų pirma bus nužudyti visi programos foniniai procesai, tada naudokite
onTaskRemoved
pranešti programai, kad pašalinta fono užduotis. Tuomet atrodo, kad programa turi nuspręsti, kas vyksta, todėl manau, kad tai techniškai ne sunkiai ir greitai nustatoma, kas nutinka programai po to.
Ar ką nors papildyti paaiškinimu? Garsas išjungtas komentaruose. Norite perskaityti daugiau atsakymų iš kitų „tech-savvy Stack Exchange“ vartotojų? Čia rasite visą diskusijų temą.