Mi történik pontosan akkor, ha az Android-alkalmazást a legutóbbi alkalmazások listájáról húzza?
Amikor az alkalmazást az Androidon jelenleg futó alkalmazások listáján húzza le, mi történik pontosan az alkalmazással és az adatokkal? Olvassa el a vizsgálatot.
A mai Kérdések és válaszok munkamenet az Android Enthusiast - a Stack Exchange egy részlege, a közösség által vezérelt Q&A webhelyek csoportja alapján érhető el..
A kérdés
Az Android Enthusiast Reader Eldarerathis kíváncsi az app-swipe funkcióra, amely lehetővé teszi, hogy az otthoni gomb segítségével húzza fel a futó alkalmazások listáját, majd jobbra csúsztassa őket, valószínűleg bezárva őket:
A Ice Cream Sandwich legutóbbi alkalmazáslistája hozzáadta az alkalmazásokat a listáról, így véglegesen elutasította őket (és amennyire tudom, hogy vaníliafunkció, nem CM / egyéni ROM). A dokumentáció és a platform kiemelései nem fedik le a funkció alulról történő működését, de kíváncsi vagyok, hogy mit csinál a rendszer..
További kíváncsiságom mellett úgy döntöttem, hogy egy gyors tesztet végzek: elindítottam a Music-ot egy CM9-es telepítésen, majd hátrahagytam belőle. Ezután megnéztem a legújabb alkalmazások listáját, és láttam, hogy valóban ott volt (és a megfelelő állapotban, a bélyegkép alapján). Aztán elmentem
Beállítások-> Alkalmazások
és az erő leállította a Zene alkalmazást, de még mindig szerepel a legutóbbi listán, és azt hittem, hogy nem kapcsolódik a háttérben zajló folyamatokhoz.Most már felismerve, hogy a zene lehetett rossz választás, én is teszteltem az USA Today alkalmazással. Ez alapvetően azonos viselkedést mutatott, és úgy tűnt, kénytelen volt „újraindítani” az erőszak leállítása után (ami értelme), bár a legutóbbi alkalmazások listáján szereplő bélyegkép nem tükrözi ezt (gyorsítótárban, kitaláltam?).
Szóval, mi történik az operációs rendszer szintjén, amikor az alkalmazás legördül a legutóbbi listából? Egyszerűen törli az alkalmazás adatait a RAM-ból, és a szemét összegyűjti, elpusztítva elmentett állapotát?
Mi történik pontosan abban az esetben, ha az alkalmazást elhúzza a listáról?
A válaszok
Az Android Enthusiast közreműködő Austin Mills némi betekintést nyújt:
A legújabb alkalmazások listájából az alkalmazások letörlése vanília, és igen, nem jól dokumentált. Ez a témakör egy tisztességes megbeszélés tárgya volt különböző Android fórumokon ... a konszenzus leginkább itt néhány megjegyzést tartalmaz: hogy a viselkedés hasonló, de nem teljesen ugyanaz, mint egy alkalmazás bezárása - általában (olyan alkalmazások esetében, amelyek nem határozza meg kifejezetten a hátsó gombok kezelését) ugyanaz, mintha elég időn belül visszalépne egy olyan alkalmazásból, amelyből kilép.
A hivatkozás további részleteket tartalmaz a sajátosságokról, de összességében úgy gondolja, hogy kilép az alkalmazásból.
A Zenei alkalmazásra jellemző, hogy azt hiszem, hogy elindít egy szolgáltatást, így bár maga a feladat (a Zenei alkalmazás / felhasználói felület) le van zárva, a szolgáltatás továbbra is a háttérben fut, így a zene nem áll le hirtelen csak azért, mert a feladat kiürült a memóriakezelési okok miatt. Ez talán befolyásolta azt, amit látott.
Ezután, Eldarerathis, aki részt vett a kérdés-válasz körben, visszajött a saját kutatásával, hogy kerekítse ki a választ:
Úgy tűnik, megtaláltam azokat a varázslatos keresési kifejezéseket, amelyek a Google alkalmazottai néhány magyarázatához vezettek. Pontosabban, találtam egy pár különböző helyet, ahol Dianne Hackborn elmagyarázza, mi történik akkor, ha valamit kihúzunk a legutóbbi listából. Az első az egyik Google+ hozzászólásának egy megjegyzése:
A [W] kalap speciálisan akkor fordul elő, amikor elhúzza egy újabb feladatot: (1) megöli az alkalmazás minden hátterét vagy üres folyamatát (lásd itt, hogy ez mit jelent), és (2) az új API-t használja a szolgáltatások bármelyikének megadására a kérelmet az eltávolítandó feladatról, hogy megtehesse a megfelelőt.
Azt is megjegyzi egy blogmegjegyzésben:
Valójában a bejegyzések eltávolítása az utóbbi feladatokban meg fogja ölni a folyamathoz tartozó minden folyamatot. Nem fogja közvetlenül megállítani a szolgáltatásokat, de létezik API, amelyből megtudhatja, hogy a feladat el lett távolítva, hogy eldöntse, hogy azt akarja-e jelenteni, hogy le kell állítania. Ez azt jelenti, hogy az e-mail alkalmazás nemrégiben elvégzett feladata eltávolítása nem fogja megakadályozni az e-mailek ellenőrzését.
Ha valóban teljesen le akarja állítani egy alkalmazást, hosszú ideig megnyomhatja a legutóbbi feladatokat az alkalmazásinformációhoz, és nyomja meg az erő megállását. Az erőszak leállítása az alkalmazás teljes megölése - minden folyamat megölik, az összes szolgáltatás leáll, az összes értesítés eltávolítása, az összes riasztás eltávolítása stb. Az alkalmazás nem indítható újra, amíg kifejezetten nem kérik.
Tehát úgy tűnik, hogy az összefoglaló azt jelenti, hogy egy alkalmazás kiürítése a listából először megöli az alkalmazás összes háttérfolyamatát, majd használja az
onTaskRemoved
értesíteni az alkalmazást arról, hogy a háttérfeladatot eltávolították. Ekkor úgy tűnik, hogy az alkalmazás dönti el, hogy mi történik, így azt hiszem, technikailag nem nehéz és gyors szabály arról, hogy mi történik az alkalmazással ezen a ponton.
Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.