9Aug

Mi történik éppen akkor, amikor átsiklik egy Androidalkalmazás a legutóbbi alkalmazások listájáról?

Amikor lefuttatja az alkalmazást az Android jelenleg futó alkalmazások listájáról, mi történik pontosan az alkalmazással és az adatokkal? Olvass tovább, ahogy vizsgáljuk.

A mai kérdés &A válaszadási szekció az Android enthusiastának köszönhetően - a Stack Exchange megosztottságának köszönhetően, a Q & A webhelyek közösségi szintű csoportosítása.

Kérdés

Android Engedélyes olvasó Az Eldarerathis kíváncsi az alkalmazás-lecsúszás funkcióra, amely lehetővé teszi a futó alkalmazások listájának felemelése az otthoni gombon keresztül, majd jobbra csúsztatva őket, feltételezve, hogy bezárja őket:

A legutóbbi alkalmazások listájaAz Ice Cream Sandwich lehetővé tette, hogy az alkalmazásokat eltávolítsák a listából, és véglegesen elutasítsák őket( és amennyire én tudom, ez vanília funkció, nem CM / egyéni ROM).A dokumentáció és a platform kiemelései nem feltétlenül fedezik a funkciók alulról építkező működését, de kíváncsi vagyok, hogy mi a rendszer valójában.

Kíváncsiságom mellett úgy döntöttem, hogy gyors tesztet végzek: elkezdtem a zenét egy CM9 telepítéssel, majd kiléptem abból. Ezután ellenőriztem a legutóbbi alkalmazások listáját, és láttam, hogy valóban ott van( és a megfelelő állapotban, a bélyegkép alapján).Ezután beléptem a Beállítások-> Alkalmazások és az erő megállította a Zene-alkalmazást, de még mindig szerepel a legutóbbi listán, ami azt hitte, hogy nem kapcsolódik a háttérben lévő folyamatokhoz.

Megállapítottam, hogy a Zene rossz választás lehet, teszteltem az USA Today alkalmazást is. Ez alapvetően ugyanazt a viselkedést mutatta ki, és úgy tűnt, hogy az erőmegállást követően újraindulni kényszerült( ami értelme van), noha a legutóbbi alkalmazások listáján szereplő bélyegkép nem tükrözi ezt( gyorsítótár, találgatás?).

Szóval, mi történik az operációs rendszer szintjén, amikor leteszed egy alkalmazást a legutóbbi listáról? Egyszerűen tisztázza az alkalmazás adatait a RAM-ból, és a szemetet összegyűjtik, megsemmisítve mentett állapotát?

Mi történik pontosan akkor, amikor lefuttatja az alkalmazást a listából?

A válaszok

Az Android Austin Mills kedvelő munkatársai némi betekintést nyújtanak:

A legutóbbi alkalmazások listájáról lecserélő alkalmazások vanília, és igen, nem jól dokumentálva. Ez volt a téma a tisztességes viták különböző Android fórumokon. .. a konszenzus úgy tűnik, hogy a legjobban leírt néhány megjegyzést: hogy a viselkedés hasonló, de nem pontosan ugyanaz, mint az alkalmazás bezárása általában( olyan alkalmazások, amelyeknem definiáljuk az explicit vissza gombkezelést) ugyanaz a dolog, mintha elegendő időbe kerülne egy alkalmazáson belül, amelyből kilépünk belőle.

A linknek van néhány részlete a specifikációkról, de összességében úgy gondolhatja, hogy az alkalmazásból való kilépés.

Sajátos a Zene alkalmazáshoz, úgy gondolom, hogy elindít egy szolgáltatást, így bár a feladat maga( a Zene alkalmazás / felhasználói felület) bezáródhat, a szolgáltatás továbbra is fut a háttérben, így a zene nem hirtelen megáll, csak azért, mertfeladatot törölték a memóriakezelés miatt. Ez befolyásolta, amit látott.

Aztán részt vett az élet kérdés-válaszkörében, Eldarerathis visszajött néhány saját kutatásával, hogy kiegészítse a választ: az

úgy tűnik, megtalálta a mágikus keresési kifejezéseket, amelyek a Google alkalmazottai számára adott magyarázatot. Pontosabban találtam néhány különböző helyet, ahol Dianne Hackborn megmagyarázza, hogy mi történik, amikor lecsúsztat valamit a legutóbbi listáról. Az első egy megjegyzés a Google+ bejegyzéseinek valamelyikén: Az

[W] kalap különösen akkor fordul elő, ha elhúzza a legutóbbi feladatot:( 1) megöli az alkalmazás hátterét vagy üres folyamatát( lásd itt, mi ez)és( 2) az új API-t használja az alkalmazás bármely szolgáltatásáról az eltávolítandó feladatról, így bármit is tehet, amit helyénvalónak tart.

Megjegyzi egy blog megjegyzést is:

Valójában egy bejegyzés eltávolítása a legutóbbi feladatok során meg fogja semmisíteni a folyamatban létező háttérfolyamatokat. Nem okoz közvetlenül a szolgáltatásokat a leállításhoz, de van egy API is, hogy megtudja, a feladat eltávolításra került, hogy eldöntsék, hogy ez azt akarja, hogy azt jelenti, hogy meg kell állnia. Ez azt jelenti, hogy az eltávolítás azt mondja, hogy az e-mail alkalmazás legutóbbi feladata nem fogja megakadályozni az e-mailek ellenőrzését.

Ha tényleg teljesen le szeretné állítani az alkalmazást, a legfrissebb feladatokra röviden megnyomva megkeresheti az alkalmazásinformációkat, és ott érheti el az erőszakot. Az erőmegállás az alkalmazás teljes elpusztítása - minden folyamat leáll, minden szolgáltatás leállt, az összes eltávolított értesítést eltávolították, az összes riasztást eltávolították stb. Az alkalmazás nem indítható újra, amíg kifejezetten nem kérik.

Úgy tűnik tehát, hogy az összefoglaló az, hogy egy alkalmazás lecsúszása egy listából először megöl minden alkalmazási háttérfolyamatot, majd az onTaskRemoved segítségével értesíti az alkalmazást, hogy a háttérben levő feladatot eltávolították. Abban a pillanatban úgy tűnik, hogy az alkalmazásnak kell eldöntenie, hogy mi történik, úgyhogy úgy gondolom, hogy technikailag az nem egy kemény és gyors szabály arról, hogy mi történik az alkalmazással ezen a ponton túl.

Van valami a magyarázat hozzáadásához? Hangzik ki a megjegyzésekben. Szeretne többet válaszolni a többi technikus-tudós Stack Exchange felhasználóiról? Nézze meg a teljes vitafonalat itt.