Image
29.6.2016 0 Comments

Programujeme pre Android /5.časť

Napriek tomu, že hlavnou náplňou tohto seriálu je programovanie, ktorého výsledkom majú byť spustiteľné aplikácie, stále sa mu nemôžeme naplno venovať. Špecifická štruktúra aplikácií určených pre OS Android nám nedovoľuje začať programovať bez vysvetlenia významu nasledujúcich štyroch komponentov:

1. aktivity,
2. služby,
3. poskytovatelia obsahu,
4. prijímače oznámení.

Aktivity (activities)

Aktivity formujú používateľské rozhrania (UI – user interfaces) aplikácií tým, že vytvárajú priestor na vkladanie grafických prvkov. Inými slovami, ide o prezentačnú vrstvu obsahujúcu ovládacie prvky potrebné na interakciu používateľa s programovou logikou. Vizuálny obsah aktivít špecifikujeme pomocou pohľadov (views), z ktorých sú odvodené grafické prvky (widgets). Aplikácie môžu byť tvorené viacerými aktivitami, ktoré môžu byť spustené aj samostatne. „Životný“ cyklus (life cycle) aktivít je zväčša krátky a môže byť kedykoľvek ukončený systémom.

Vo všeobecnosti sa životný cyklus aplikácií určených pre Android podstatne odlišuje od životného cyklu aplikácií určených pre bežné PC. Hlavný dôvod tohto rozdielu tkvie v určení zariadení (smartfónov), pre ktoré bol Android vyvinutý. Aplikácie sa v prvom rade musia podriadiť prioritnej funkcii smartfónov, ktorou je komunikácia (telefonovanie, SMS...). Ďalší rozdiel medzi smartfónmi, resp. tabletmi a bežnými PC je v ich hardvéri. Aj keď nemožno jednoznačne povedať, že výkon uvedených zariadení je nižší ako výkon bežných PC, pre mnohé z nich tento fakt stále platí. Aplikácie určené pre Android teda musia počítať s menej výkonnými CPU a hlavne menšou veľkosťou RAM.

OS Android si z uvedených dôvodov vyhradzuje právo zrušiť spustené aktivity, a to z najrôznejších dôvodov. To si vyžaduje zmenu v myslení programátorov. Žiadna aktivita nemá isté, ako dlho bude spustená, čo musí akceptovať aj jej programová logika. Android definuje nasledujúce štyri možné stavy životného cyklu aktivít:

Stav Aktivita...
Spustená bola spustená, beží na popredí (foreground) a reaguje na činnosť používateľa
(running)
Pozdržaná bola spustená, beží na popredí, ale iná aktivita prekrýva časť, resp. celú obrazovku, ktorá bola predtým určená na pôvodnú aktivitu, používateľ nemusí byť schopný ovládať pôvodnú aktivitu, v prípade nedostatku RAM môže OS pôvodnú aktivitu zrušiť
(paused)
Zastavená bola spustená, ale následne bola spustená iná aktivita, používateľ nemôže ovládať pôvodnú aktivitu, tá však môže o svojej činnosti informovať, v prípade nedostatku RAM môže OS pôvodnú aktivitu zrušiť 
(stopped)
Zrušená nebola spustená / jej zrušenie bolo vynútené systémom / bola riadne ukončená 
(killed, shut down)

Obr. 1 Životný cyklus aktivít (obrázok prevzatý z Android Open Source Project je použitý bez zmien na základe podmienok licencie Creative Commons 2.5 Attribution)

Aplikácie určené pre Android nemajú funkciu main(), ktorá by sa kontinuálne vykonávala až do jej riadneho ukončenia. Všetky aktivity, ktorých inštancie vytvára OS, majú rovnaký životný cyklus. Zmena stavu (etapy) životného cyklu aktivít je sprevádzaná vykonaním jednej, resp. viacerých z nasledujúcich metód:

Metóda Vykonaná v prípadoch...
onCreate() - spustenia aktivity
- spustenia aktivity po jej predošlom zrušení z dôvodu nedostatku RAM s následnou obnovou stavu
- opätovného vytvorenia aktivity po zmene stavu zariadenia
onStart() - spustenia aktivity
- obnovenia aktivity po predošlom zastavení (po vykonaní onRestart())
onResume() - spustenia aktivity
- obnovenia aktivity po predošlom pozdržaní
onPause() - pozdržania aktivity
onStop() - zastavenia aktivity
onRestart() - obnovenia aktivity po predošlom zastavení
onDestroy() - zrušenia aktivity (metóda nemusí byť vždy vykonaná)

Služby sú nevizuálne komponenty určené na vykonávanie špecifických činností nevyžadujúcich používateľskú interakciu. Na rozdiel od aktivít je ich životný cyklus dlhší, resp. služby sú navrhnuté na nepretržitý beh na pozadí (background). Služby zväčša plnia čiastkové funkcie súvisiace s konkrétnym komunikačným, resp. multimediálnym obsahom zariadení.Služby (services)

Poskytovatelia obsahu (content providers)

Poskytovatelia obsahu predstavujú abstraktnú úroveň pre prístup k údajom nachádzajúcim sa v úložnom priestore zariadenia. Umožňujú kontrolovať (spravovať) prístup k uloženým údajom, ku ktorým poskytujú prístup pre aplikácie, ktoré o ne požiadajú cestou tzv. riešiteľov (content resolvers). Poskytovatelia obsahu sa navonok javia ako databázy. Prístup k uloženým údajom je závislý od práv, ktorými disponujú aplikácie, a takisto od prístupových práv nastavených údajom.

Prijímače oznámení (broadcast receivers)

Prijímače oznámení sú komponenty slúžiace na príjem oznámení generovaných systémom. Rovnako ako služby sú zväčša používateľsky neviditeľné, bežia na pozadí a reagujú na broadcastové oznámenia, resp. podnety. Je bežné, že prijímače oznámení sú použité v rámci aktivít. Záujem o príjem konkrétnych oznámení deklarujú podobne ako aktivity cestou tzv. filtrov zámerov (intent filters).

Zámery (intents)

Zámery sú správy, ktoré sú odovzdávané aktivitám, službám alebo prijímačom oznámení v prípade udalostí (events) vzniknutých pri rôznych hardvérových či softvérových zmenách alebo v prípade  inej aplikačne generovanej požiadavky. OS pomocou premysleného systému (cestou deklarácie filtrov zámerov) automaticky spúšťa komponenty, ktoré budú na zámery reagovať. Dôležité je, že zámery opisujú iba činnosť, ktorá sa má vykonať, a nie spôsob, ako sa má vykonať.

Fragmenty (fragments)

Fragmenty tvoria voliteľnú vrstvu medzi aktivitami a pohľadmi, resp. grafickými prvkami UI. Vkladajú sa do aktivít z dôvodu agregácie kontajnerov a widgetov. Dôvodom ich doplnenia bol najmä napredujúci vývoj rôznych veľkostí displejov. Fragmenty sú spravované aktivitami, majú podobný životný cyklus a môžu mať dynamický charakter. Metódy fragmentov súvisiace s ich životným cyklom sú doplnené (rozšírené) o metódy slúžiace na kontakt s aktivitami.

 

Zobrazit Galériu
Autor: Marek Sopko

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Ako zbaviť fotky hmly

08.12.2016 11:59

Hmla alebo dym sú často veľmi kreatívne nástroje. No všetkého veľa škodí. Fotka potom stráca kontrast a v podstate na nej nič nevidieť. Hmlu môžete neraz následnými úpravami odstrániť alebo zredukovať ...

Ako na to

Užitočné SW nástroje

08.12.2016 11:53

AllDup v4.0.3 Určenie: program na vyhľadávanie a odstraňovanie duplicitných súborov Vlastnosti: duplicitné súbory sa vyhľadávajú len na zvolených diskových jednotkách alebo len v rámci vybraných ...

Ako na to

Fotografovanie s bleskom

08.12.2016 11:47

Ak máte moderný fotoaparát so vstavaným alebo externým bleskom, zdá sa vám téma článku triviálna. Jednoducho nastavíte vhodný režim, vyberiete najlepšiu kompozíciu záberu, exponujete a o zvyšok sa už ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá