Multitasking android, csak szórakozásból

Egyszer régen, megszorítottam a poszt „androidok gyilkosok szükség? Végső döntés „nagyon felületes. De az alapvető fogalmakat nem lehet leírni, csak két szót. És most, évekkel később, egy új szintre Android programozó vissza a kérdésre.

Az Android platform meglehetősen egyedülálló abban az értelemben, hogy lehetővé teszi több alkalmazás egyidejű futtatását. A fejlesztők jöttek másik platformon lehet találni a módját, amelyben ez működik, váratlan. Megértése multitasking Android fontos az alkalmazások fejlesztését, amelyek jól működnek, és integrálható a többi Android platform. Ez a cikk az alapjait Android multitasking design, a hatással, hogy milyen alkalmazások működnek, és hogyan lehet a legjobban kihasználni az egyedi jellemzői Android.

Multitasking android, csak szórakozásból

Senior Android fejlesztő Diane Hakborn (Dianne Hackborn)

tervezési szempontjai

1. Nem szükséges, hogy a felhasználó bezárja az alkalmazást, ha végzett velük dolgozni. Ez jellemző a számítógépek, de nem működik jól a mobil környezetben, ahol szükség van a gyakori rövid távú újra sok alkalmazás a nap folyamán.

4. Rendelkezésre álló API interfész elegendőnek kell lennie ahhoz, hogy írt beágyazott Google alkalmazás részeként a filozófia „minden alkalmazás egyforma.” Ez azt jelenti, hogy a háttérben zenelejátszás, adatszinkronizálás, GPS navigációs és alkalmazásokat tölthet le végre az azonos API, amely a rendelkezésre álló külső fejlesztők.

Az első két követelmény konfliktusban vannak egymással.

Nem akarjuk a felhasználók aggódni bezárása az alkalmazás, akkor kell állítani, hogy minden alkalmazás mindig dolgozik. Ugyanakkor, a mobil eszközök szigorú korlátokat a memória használatára, így a rendszer, esetleg teljesen sikertelen, mivel ez az elv több memóriát igényelnek, mint amennyi rendelkezésre áll. Ezzel szemben az asztali számítógép a swap file csak elkezd dolgozni lassabban. Ezek a versengő megszorítások voltak a fő motívum az Android fejlesztését.

Amikor az alkalmazás leáll?

Egy közös félreértés Android multitasking rejlik a különbség a folyamat (folyamat), és egy alkalmazás (alkalmazás). Az Android, ezek nem szorosan kapcsolódó szervezetek.

Alkalmazások kimutatható, hogy a felhasználó, de nincs igazán működik a folyamat jelenleg. Több alkalmazás is megoszthatja egy folyamat, vagy egy alkalmazás használata esetén több folyamatokat igényeik; eljárás (ok) a kérelem maradhat Android, akkor is, ha az alkalmazás nem aktív, és nem csinál semmit.

Az a tény, hogy lássuk, hogy az app „működik» (futás), nem jelenti azt, hogy a futó alkalmazások valójában vagy csinál semmit. Android rendszer egyszerűen úgy döntött, hogy nem megölni a folyamatot, de hagyja, hogy szükség esetén a jövőben.

Ezen felül, akkor hagyja az alkalmazást egy ideig, hogy jöjjön vissza, hogy azon a helyen, ahol abbahagyta, és ez idő alatt, talán, Android megszabadulni minden olyan eljárás, hogy szabadítson fel az erőforrásokat más igényeket.

A legfontosabb, hogy megértsük, hogyan Android kezeli az alkalmazás folyamatok nem állnak meg teljesen. Amikor a felhasználó elhagyja a kérelmet, annak folyamata tárolja a háttérben, ami lehetővé teszi, hogy továbbra is működtetni (pl letölteni egy weboldalt), ha szükséges, és azonnal ugrik előtérbe, amikor a felhasználó visszatér rá. Mindaddig, amíg elég memória Android nem fog megölni a folyamatot, azaz a ők «fut» minden alkalommal.

Természetesen, mivel van egy korlátozott mennyiségű memória, Android el kell döntenie, hogy mikor kell megszabadulni a folyamatokat, amelyek nem szükségesek. Bővebben itt „alapjai alkalmazások.” A döntés, hogy a folyamat befejezéséhez, vagy nem alapul, hogy mennyire fontos a folyamat az aktuális felhasználó munkáját, és mennyi idő telt el azóta, hogy utoljára ez a folyamat elengedhetetlen volt a felhasználónak.

Miután Android megállapította, hogy szükség van, hogy távolítsa el a folyamat, ez nem olyan brutálisan, csak erőszakkal megöli. Ebben az esetben a kernel felszabadítja a lefoglalt erőforrások, nem számít, mennyire jól megírt alkalmazás. Ez egyszerűsíti műveletek memóriával és gyorsítja a reakciót számos súlyos helyzetet.

Ha a felhasználó később visszatér a kérelem leölt, Android'u kell oly módon, hogy újra futtatni ugyanabban az állapotban, mint volt az utolsó alkalom, hogy megfeleljenek az elv „minden alkalmazás fut minden alkalommal» (minden alkalmazás fut az összes az idő). Ez úgy történik, nyomkövető részei a felhasználói alkalmazások (tevékenység), és újra kezdve számukra tájékoztatást az utolsó állam. Ez utóbbi feltétel keletkezik, amikor egy felhasználó elhagyja ezt a részét az alkalmazás (de nem akkor, amikor megölték).

Explicit háttérmunka

Szóval, van egy módja az alkalmazás hallgatólagosan a háttérben, amíg a folyamat megölte Android rendszer keretében rendszeres memória kezelése. Ez jót tesz olyan dolgokat, mint weboldalak betöltése a háttérben, de mi a helyzet bonyolultabb követelmények? Játsszon le zenét a háttérben, az adatok szinkronizálása, helymeghatározást, riasztók, stb

Két fő eszközei: vevőkészülékek és szolgáltatások.

BroadcastReceiver

Broadcast üzenetek (BroadcastReceiver) lehetővé teszi egy alkalmazás futtatásához egy rövid ideig, a háttérben eredményeként egy adott esemény. Ezt fel lehet használni sokféleképpen létrehozni fölérendelt: például AlarmManager segítségével az alkalmazás adásba küldeni egy adott időpontban, és LocationManager küldhet broadcast üzenetet, ha változást észlel a helyét az érdeklődés. Mint vevő, az információk egy részét az nyilvánvaló, Android megtalálja, és indítsa el az alkalmazást, akkor is, ha ez nem működik; Persze, ha már van a folyamat rendelkezésre a háttérben, a broadcast üzenet lehet nagyon hatékonyan közvetlenül neki.

Feldolgozásakor a Broadcast, az alkalmazás kap egy fix ideig (jelenleg 10 másodpercig), hogy tegye a dolgát. Ha ez nem fejeződik be a megadott időn belül, a kérelem szegény-e, és a folyamat azonnal átvisszük a háttérben állapotban kell ölni, ha ez szükséges memóriát.

Broadcast üzenetek (BroadcastReceiver) ideális a kis munkadarabok válaszul egy külső esemény, például azáltal, hogy egy értesítést, hogy a felhasználó benyújtása után egy új jelentést a GPS helyen. Ezek nagyon könnyű, mivel az alkalmazás a folyamat csak jelen lenni, amíg az aktív BroadcastReceiver. Minthogy ezek a korlátozott ideig elég erős adható garancia arra, hogy nem lehet megölni a folyamatot a futás során. Azonban BroadcastReceiver nem alkalmas a problémák bizonytalan időtartamú, például működik a hálózat.

Szolgáltatások lehetővé teszik az alkalmazást, hogy végre hosszú ideig ezen a háttérben műveletek. Tény, hogy sok más funkciók, amelyek a szolgáltatásnyújtás, de ebben az összefüggésben, a fő cél az, hogy lehetővé teszi az alkalmazás, hogy továbbra is működik, amíg ez a háttérben (azaz nem az előtérben), amíg a munka nem ez lesz végre. Az alkalmazás maga irányítja, amikor fut egyértelmű és amikor megáll egy szervizt.

Services Management eltér a broadcast üzenetben, korlátlan számú szolgáltatást kérheti, hogy futni határozatlan ideig. És lehet, hogy nincs elég memória, hogy az összes szolgáltatás fut.

Ha a memória túl kicsi, a szolgáltatási folyamatok is azonnal le kell ölni, mivel azok a háttér folyamatok. Azonban, ha szükséges, az Android fog emlékezni, hogy ezeket a szolgáltatásokat akar maradni és dolgozni, és indítsa újra őket később, amikor több memória (RAM) lesz elérhető. Például, ha a felhasználó megnyit egy weblapot, amely előírja, nagy mennyiségű RAM, Android képes megölni ezeket a háttérben futó szolgáltatásokat, mint például a szinkronizálás, amíg el nem szolgálnak böngésző igényeket szem előtt tartva.

Szolgáltatás magatartás további tárgyalások kér „elülső”, és a szolgáltató megy a „ne ölj meg”, de előírja a bejelentést, hogy a felhasználó, hogy aktívan dolgozik. Ez hasznos szolgáltatásokat, például háttérzeneként lejátszás és a navigáció, és a felhasználó tisztában van azzal, hogy aktív. Ha zenét hallgat, akkor mindig látni a zenei jel az állapotsorban. Android nem próbálja megölni a szolgáltatás, de a kompromisszum, amely biztosítja, hogy a felhasználó tisztában van, és lesz képes megállítani ezeket kifejezetten ha szükséges.

beépített komponensek

Beépített vevőkészülékek és szolgáltatások lehetővé teszik a fejlesztők, hogy a sokféle és hatékony back-end műveleteket.

Az Android 1.0, akkor már végrehajtásához használt szinte minden háttér feladatok:

  • zenelejátszás, amikor a felhasználó elhagyja a app játékos
  • ismétlődő riasztások menetrend
  • naptári értesítések megjelenítéséhez a megfelelő időben
  • háttér fájlok letöltésének
  • értesítést az új e-mail
  • Névjegyek szinkronizálása.

Mivel a platform fejlett, ugyanaz az alapvető komponenseket végrehajtásához használt a sok új szolgáltatást biztosít a fejlesztők:

  • beviteli módszerek IME használatával
  • widgetek
  • élő háttérkép, stb

utószó

Az ezt követő interjúk a fejlesztők a platform Diana Hakborn (Dianne Hackborn) arra a kérdésre, hogy „az Android csapat szeretne másképp csinálni az elején a fejlesztési platform?” Megjegyzendő, hogy szükséges lenne kezdetben nagyobb ellenőrzést platform felett alkalmazások nagyon korlátozott feltételek hozzáférést bizonyos rendszer funkcióit.

Multitasking android, csak szórakozásból

Történet Dianne Hackborn «A igénylése Őszibarack»

tovább

  • Multitasking android, csak szórakozásból
    Gyilkos androidok szükség? A végső döntés
  • Multitasking android, csak szórakozásból
    Támogatása megszűnik Eclipse Android Developer Tools
  • Multitasking android, csak szórakozásból
    Megértése APK csomag Android Studio 2.2
  • Multitasking android, csak szórakozásból
    Android Studio. Nem sikerült létrehozni az SD-kártyára