Amikor ellop egy alkalmazást az éppen futó Android-alkalmazások listájáról, mi történik pontosan az alkalmazással és az adatokkal? Olvassa tovább, miközben nyomozunk.
A mai Kérdések és válaszok ülés az Android Enthusiast jóvoltából érkezik - a Stack Exchange, a Kérdések és válaszok webhelyeinek közösségi vezérelt csoportja.
A kérdés
Az Android Enthusiast olvasó, Eldarerathis kíváncsi az alkalmazáscsúsztatás funkcióra, amely lehetővé teszi, hogy a kezdőgombbal előhúzza a futó alkalmazások listáját, majd jobbra csúsztassa őket, vélhetően bezárva őket:
A Ice Cream Sandwich legutóbbi alkalmazáslistája hozzáadta azt a lehetőséget, hogy az alkalmazásokat kicsúsztassa a listáról, ezáltal véglegesen elutasítva őket (és ha jól tudom, ez vanília funkció, nem CM / egyedi ROM). Úgy tűnik, hogy a dokumentáció és a platform kiemelései nem fedik le ennek a funkciónak a burkolat alatti működését, de kíváncsi vagyok, hogy a rendszer valójában mit csinál.
További kíváncsiságomat növelve úgy döntöttem, hogy elvégzek egy gyors tesztet: elindítottam a Music alkalmazást egy CM9-es telepítéssel, majd kihátráltam belőle. Ezután megnéztem a legutóbbi alkalmazások listáját, és láttam, hogy valóban ott van (és megfelelő állapotban, az indexkép alapján). Én aztán bementem
Beállítások-> Alkalmazásokés az erő megállította a Zene alkalmazást, de még mindig felkerült a legutóbbi listára, ami azt hitte, hogy nem kapcsolódik a háttérben húzódó folyamatokhoz.Most, hogy rájöttem, hogy a Zene rossz választás lehet, teszteltem az USA Today alkalmazással is. Ez alapvetően ugyanazt a viselkedést mutatta, és úgy tűnt, hogy kénytelen volt „újraindítani” az erő leállítása után (aminek van értelme), bár a legutóbbi alkalmazások listájának indexképe nem ezt tükrözi (gyorsítótárban, gondolom?).
Szóval, mi történik valójában az operációs rendszer szintjén, amikor ellop egy alkalmazást a legutóbbi listáról? Egyszerűen törli az alkalmazás adatait a RAM-ból, és a szemét összegyűjti őket, tönkretéve a mentett állapotát?
Mi történik pontosan, amikor ellopja az alkalmazást a listáról?
A válaszok
Austin Mills, az Android rajongói közreműködő némi betekintést kínál:
Vanília az alkalmazások legördülése a legutóbbi alkalmazások listájáról, és igen, nem jól dokumentált. Ez volt a témája a megfelelő mennyiségű megbeszélésnek a különböző Android fórumokon ... a konszenzust látszik a legjobban leírni itt néhány megjegyzésben : hogy a viselkedés hasonló, de nem teljesen azonos az alkalmazás bezárásával - általában (azoknál az alkalmazásoknál, amelyek nem határoznak meg kifejezetten Vissza gombkezelést) ez ugyanaz, mint elég sokszor visszaütni egy olyan alkalmazáson belül, amelyből kilép azt.
A link tartalmaz még néhány részletet a sajátosságokról, de összességében úgy gondolhatja, hogy kilép az alkalmazásból.
Úgy gondolom, hogy a Zene alkalmazásra jellemző, hogy elindít egy szolgáltatást, így bár maga a feladat (a Zene alkalmazás / felhasználói felület) zárva lehet, a szolgáltatás továbbra is a háttérben fut, hogy a zene hirtelen ne álljon le csak azért, mert a feladat memóriakezelési okokból törölték. Ez befolyásolhatta a látottakat.
Majd az élet kérdés-válasz körében részt véve Eldarerathis néhány saját kutatással tért vissza, hogy kerekítse a választ:
Úgy tűnik, hogy megtaláltam azokat a varázslatos keresési kifejezéseket, amelyek a Google alkalmazottai magyarázatához vezettek. Pontosabban, találtam egy pár különböző helyet, ahol Dianne Hackborn elmagyarázza, mi történik, ha kitöröl valamit a legutóbbi listáról. Az első az megjegyzés az egyik Google + -bejegyzéséhez :
A [W] konkrétan akkor történik, ha egy legutóbbi feladatot elhúz: Ez: (1) megöli az alkalmazás bármely hátterét vagy üres folyamatát itt mit jelent ez), és (2) használja az újat TŰZ elmondani az alkalmazás bármely szolgáltatásának az eltávolítandó feladatot, hogy azt megtehesse, amit megfelelőnek tart.
Ő is jegyzetek egy blog kommentben :
Valójában egy bejegyzés eltávolítása a legutóbbi feladatokból megöli a folyamat számára létező háttérfolyamatokat. Ez közvetlenül nem fogja leállítani a szolgáltatásokat, azonban van egy API, amely megtudja, hogy a feladatot eltávolították-e annak eldöntésére, hogy azt akarják-e, hogy le kell állítaniuk. Ennek az az oka, hogy egy e-mail alkalmazás mondjuk legutóbbi feladatának eltávolítása nem fogja abbahagyni az e-mailek keresését.
Ha valóban le akarja állítani az alkalmazást, akkor hosszan megnyomhatja a legutóbbi feladatokat az alkalmazásinformációk eléréséhez, és ott nyomja meg az erő leállítást. A kényszer-leállítás az alkalmazás teljes megölése - az összes folyamat megölik, az összes szolgáltatás leáll, az összes értesítés eltávolításra kerül, az összes riasztás eltávolításra kerül stb. Az alkalmazás csak akkor kérhető újra, ha kifejezetten kérik.
Tehát úgy tűnik, hogy az összefoglaló az, hogy ha egy alkalmazást töröl a listáról, akkor először megöli az alkalmazás összes háttérfolyamatát, majd
onTaskRemovedértesíteni az alkalmazást a háttérfeladat eltávolításáról. Ekkor úgy tűnik, hogy az alkalmazásnak kell eldöntenie, hogy mi történik, ezért azt hiszem, technikailag ott van nem kemény és gyors szabály arról, hogy mi történik az alkalmazással ezen a ponton túl.