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

Tartalomjegyzék:

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

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

Videó: Mi történik éppen akkor, amikor átsiklik egy Androidalkalmazás a legutóbbi alkalmazások listájáról?
Videó: Meet The Experts | Mustang Mach-E | Ford EU - YouTube 2024, Április
Anonim
Amikor letöröl egy 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.
Amikor letöröl egy 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ések és válaszok munkamenetét az Android Enthusiast jóvoltából adományoztuk - a Stack Exchange, a Q & A weboldalak közösség által irányított csoportosítása.

A kérdés

Android Enthusiast olvasó Az Eldarerathis kíváncsi az alkalmazás-lecsúszási funkciókra, amely lehetővé teszi, hogy felhúzza a futó alkalmazások listáját az otthoni gombon keresztül, majd jobbra csúsztassa őket, feltételezve, hogy bezárja őket:

The recent apps list in Ice Cream Sandwich added the ability to swipe apps out of the list, thereby dismissing them permanently (and as far as I know this is a vanilla function, not a CM/custom ROM one). The documentation and platform highlights don’t appear to cover the under-the-hood workings of this functionality, but I’m curious to know what the system is actually doing.

Further adding to my curiosity, I decided to do a quick test: I started up Music on a CM9 install, then backed out of it. I then checked the recent apps list and saw it was indeed there (and in the proper state, based on the thumbnail). I then went into

Settings->Applications

és az erő megállította a Zenealkalmazá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.

Felismerve, hogy a Zene lehet, hogy rossz választás, én is tesztelt az USA Today app. 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 letörli az 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áról?

A válaszok

Android Ösztönös közreműködő Austin Mills némi betekintést nyújt:

A legutóbbi alkalmazások listáján szereplő apps-ek kicserélése vanília, és igen, nem jól dokumentált. 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 egy alkalmazás bezárása általában (olyan alkalmazások, amelyek nem 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 több részlete van a részletekről, de összességében úgy gondolhatja, hogy abbahagyja az alkalmazást.

A Zene-alkalmazásra jellemző, úgy gondolom, hogy egy szolgáltatás elindul, így a feladat (a Zene alkalmazás / felhasználói felület) bezáródása esetén a szolgáltatás továbbra is fut a háttérben, így a zene nem hirtelen megáll, csak mert a feladat kiszűrésre kerültek a memóriakezelési okok miatt. Ez befolyásolta, amit látott.

Aztán az élet kérdés-válaszkörében való részvétel során Eldarerathis visszajött néhány saját kutatásával, hogy a választ keresse ki:

I appear to have found the magical search terms that led to some explanations from Google employees. Specifically, I found a couple of different places where Dianne Hackborn explains what happens when you swipe something out of the recent list. The first is a comment on one of her Google+ posts:

[W]hat specifically happens when you swipe away a recent task is it: (1) kills any background or empty processes of the application (see here for what this means), and (2) uses the new API to tell any services of the application about the task being removed so it can do whatever it thinks is appropriate.

She also notes in a blog comment:

Actually, removing an entry in recent tasks will kill any background processes that exist for the process. It won’t directly causes services to stop, however there is an API for them to find out the task was removed to decide if they want this to mean they should stop. This is so that removing say the recent task of an e-mail app won’t cause it to stop checking for e-mail.

If you really want to completely stop an app, you can long press on recent tasks to go to app info, and hit force stop there. Force stop is a complete kill of the app - all processes are killed, all services stopped, all notifications removed, all alarms removed, etc. The app is not allowed to launch again until explicitly requested.

So, it looks like the summary is that swiping an app out of the list will first kill all background processes for the app, then use

onTaskRemoved

értesíteni az alkalmazást arról, hogy a háttérfájlt eltávolították. Abban a pillanatban úgy tűnik, hogy az app felett áll, hogy eldöntsék, mi történik, úgyhogy azt hiszem technikailag nem egy gyors és gyors szabály arról, hogy mi történik az alkalmazással ezen a ponton túl.

Van valami a magyarázathoz? 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.

Ajánlott: