2. diel - Štruktúra Xamarin projektu a životný cyklus aplikácie
V minulej lekcii, Úvod do Xamarin , sme si vysvetlili, čo to Xamarin vlastne je, čo nám umožňuje, a nainštalovali a nastavili sme si Visual Studio s prvým projektom. V dnešnom tutoriálu sa pozrieme na štruktúru Xamarin projektu a životný cyklus mobilné aplikácie.
Štruktúra Xamarin projektu
Keď sa pozrieme do Solution Exploreru, vidíme vygenerovanú štruktúru
rozdelenú do 4 hlavných častí (názvy sa budú líšiť podľa názvu
projektu, ja si ho pomenoval FirstApp
).
C # FirstApp
Tejto časti sa budeme venovať najviac. Tu budeme písať kód spoločný
pre všetky platformy. Najviac nás teraz budú zaujímať súbory
MainPage.xaml
a MainPage.xaml.cs
. Iste už tušíte,
že súbor MainPage.xaml
bude slúžiť na rozloženie ovládacích
prvkov v layoutu a MainPage.xaml.cs
bude slúžiť na "oživenie"
(obsluhovanie) týchto prvkov pomocou jazyka C# .NET.
FirstApp.Android
V Androidu nás budú najviac zaujímať nasledujúce súbory a priečinky:
- Connected Services - Tu sa budú nachádzať pripojenej služby ako napr. Databázy a podobne. K tomu sa dostaneme ďalej v kurze.
- Properties - Tu sa nachádza veľmi dôležitý súbor
AndroidManifest.xml
. V tomto súbore nastavujeme minimálnu a cieľovú verziu API, ikonu a mnoho ďalších parametrov našej aplikácie. Resources/
- Tu sa budú nachádzať obrázky pre našu aplikáciu. Všimnite si zložiekDrawable/
a ich ďalších variantov. Je to preto, že aj mobilné zariadenia majú, podobne ako počítače, rôzne rozlíšenia a veľkosti a preto budeme potrebovať prispôsobiť rozloženie komponentov a rozlíšenie obrázkov veľkosti displeja každého zariadenia. Napríklad pre tablet s full HD použijeme najväčšie rozlíšenie obrázkov, kdežto pre nejaký malý telefón zas to najmenšie, aby aplikácia zbytočne nezaberala príliš veľa pamäte a nebola pomalá.MainActivity.cs
- Súbor obsahujúci základné aktivitu pri spustení aplikácie. Viac o aktivitách si povieme nižšie.
FirstApp.iOS
Tu budú konkrétne aktivity, obrázky a skripty špeciálne pre operačný systém iOS. Princíp je rovnaký ako u Androidu, takže zatiaľ netreba popisovať.
FirstApp.UWP
Túto možnosť uvidíte, iba ak ste pri inštalácii zvolili aj UWP (Universal Windows Platform). Ak budete chcieť tento nástroj doinštalovať neskôr, môžete tak urobiť v inštalátora Visual Studia. Keďže kód pre Windows Phone je v C# a nevyžaduje v začiatkoch žiadne ďalšie úpravy, nebudeme sa mu v prvých lekciách venovať.
Projektovú štruktúru si podrobne vysvetlíme počas praktických lekcií ďalej v kurze. Vysvetľovať všetko teraz by nemalo veľký význam, pretože ešte nemáme potrebné znalosti a skôr by nás to miatlo.
Aktivity
Aktivita (Activity) referuje na konkrétne obrazovku našej aplikácie a definuje celý svoj život od otvorenia / zaktivnění až do zatvorenia / zrušenie, čomu hovoríme životný cyklus aktivity. Ten obsahuje niekoľko možných fáz a metód, ktoré sa volajú ako sa medzi fázami životného cyklu prechádza. Dôležité je si zapamätať, že každá jednotlivá obrazovka (stránka) aplikácia musí mať svoju vlastnú aktivitu. napríklad:
- Keď spustíme aplikáciu, tak ako prvý uvidíme nejakú animáciu s logom, to bude prvý aktivita.
- Potom základné menu (2. aktivita).
- Klikneme na odkaz v menu a otvorí sa nám nová obrazovka (3. aktivita) a tak stále ďalej.
Každá aktivita musí mať metódu OnCreate()
a už nepovinne môže mať ďalšie metódy.
Životný cyklus aktivity
Teraz už vieme, že existujú aktivity, ktoré musí mať metódu
OnCreate()
a môžu mať aj ďalšie metódy. Kedy a prečo sa ale
ktoré metódy volajú? Iste poznáte, že keď hráte hru na telefóne a niekto
vám volá, hra automaticky prejde do pauzy a zobrazí sa vám prichádzajúci
hovor. Po ukončení hovoru sa môžete opäť vrátiť do hry, ktorá bude v
stave pauzy. Iste každý chápe význam rôznych stavov životného cyklu,
reprezentovaných danými metódami. Pozrime sa na jeho grafické
znázornenie:
Stav aktivity
Každá aktivita sa nachádza súčasne len v jednom z nasledujúcich stavov:
- Beží - Aktivita sa úspešne spustila a beží na popredí, je teda pre užívateľov viditeľná.
- Pauza - Aktivita ide vidieť, je ale napríklad prekrytá inou aktivitou. (Upozornenie na prichádzajúci SMS, hovor, alebo napríklad dialóg o plnom nabití batérie pri nabíjaní). Užívateľ sa k takejto aktivite nijako nedostane a nemôže s ňou pracovať.
- Zastavená - Aktivita nie je vidieť, používateľ k nej nemá prístup, ale jej objekt ešte nebol úplne zničený. Užívateľ sa k nej bude môcť vrátiť, ak nebude zničená, napríklad nedostatkom pamäte.
- Ukončená - Aktivita je úplne mŕtva.
Pri prechodoch medzi týmito stavmi sa volajú nasledujúce metódy.
Metóda OnCreate ()
Je základná metódou, ktorá sa spustí ako prvé a začne nám životný cyklus aktivity. Napríklad keď používateľ spustí aplikáciu, tak táto metóda nám určuje, aké sa majú načítať obrázky, aké tu budú komponenty, či ak má aplikácia bežať vo fullscreen a podobne. Skrátka nám spracuje celý dizajn a funkcie tak, ako sme ich navrhli. Je to jediná metóda, ktorou je povinné použiť!
Metóda OnStart ()
Volá sa, ak aktivita bola prvýkrát spustená (po OnCreate()
)
alebo bola aktivovaná po svojom skrytie (prichádzajúce SMS, systémový
dialóg napríklad o nabitia batérie alebo iný dialóg). Táto metóda
nemôže dostať užívateľský vstup.
Metóda OnResume ()
Volá sa tesne pred tým, než je aktivita posunutá do popredia (reštart, prvé spustenie alebo odpauzování), môže dostať užívateľský vstup.
Metóda OnPause ()
Volá sa pred prechodom aktivity na pozadí. Systém dostáva právomoc násilného ukončenia aktivity.
Metóda OnStop ()
Volá sa, keď sa má aktivita zastaviť, nie je viditeľná pre používateľov.
Metóda OnDestroy ()
Volá sa pred zrušením aktivity.
Metóda OnRestart ()
Ako vyplýva z predchádzajúceho diagramu, ak bola zavolaná
OnStop()
a aktivita sa reštartuje, volá sa
OnRestart()
, ktorý sa vykoná pred OnStart()
.
V budúcej lekcii, Prvý multiplatformový aplikácie v Xamarin a C # .NET , už konečne opustíme teóriu a naprogramujeme si jednoduchú aplikáciu, ktorá bude reagovať na vstup od užívateľa a zobrazí nám dialógové okno s pozdravom. Máte sa teda na čo tešiť!