Obsah. Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem. Toast. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant

Podobné dokumenty
3. ŽIVOTNÍ CYKLUS ACTIVITY

Začínáme s vývojem pro Android

KMI / TMA. Tvorba mobilních aplikací. 8. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Android projekt. Manifest. Activity. Uživatelské rozhraní (základy)

Uživatelské rozhraní. Layouty FrameLayout LinearLayout RelativeLayout TableLayout ScrollView Taby Dialogy ViewFlipper 11/29/11

Příklad zobrazení toastu s vlastním designem

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Práce na pozadí. Služby. Notifikace

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Aplikovaná informatika

Android za hranicemi Hello World

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 11. Přednáška. Broadcast receiver Timer Alarmy Widgety

ZÁPADOČESKÁ UNIVERZITA V PLZNI FAKULTA EKONOMICKÁ

SPÍNACÍ HODINY. Nastavení hodin a předvolby. Obr. 1

Programování v C++ 1, 5. cvičení

Rozšíření aplikace mobilního rozhraní pro nevidomé (BlindShell) o přídavné moduly

DUM 06 téma: Tvorba makra pomocí VBA

Mobilní malware na platformě Android Přednáška 1. Ing. Milan Oulehla

Programování v C++ 3, 3. cvičení

Programování v C++ 2, 4. cvičení

SPRÁVA NÁKLADŮ NA PROVOZ AUTOMOBILU PRO ANDROID

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Generické programování

1 Uživatelská dokumentace

Projekt Obrázek strana 135

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Obsah. Bluetooth BluetoothAdapter Síťová připojení ConnectivityManager Wireless Lan WifiManager Hlasový vstup. Přehrávač médií. Schránka.

8 Třídy, objekty, metody, předávání argumentů metod

Programování v C++ 1, 6. cvičení

Učební pomůcka Simulace Witness

JAVA Android Java, letní semestr

Programovatelný regulátor FUJI PXG4

Teoretické minimum z PJV

Programátorská příručka

Reliance 3 design OBSAH

ANDROID. Ing. Ladislav Pešička

15. Projekt Kalkulačka

Programování v Javě I. Leden 2008

TW15 KONCOVÝ PRVEK MSKP. Popis výrobku Technická data Návod k obsluze. Technologie 2000 s.r.o., Jablonec nad Nisou

Principy objektově orientovaného programování

Základy objektové orientace I. Únor 2010

typová konverze typová inference

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

17. Projekt Trojúhelníky

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY ANDROID APLIKACE PRO VÝUKU SLOVNÍ ZÁSOBY ANDROID APPLICATION FOR LEARNING VOCABULARY

20. Projekt Domácí mediotéka

Použití inteligentních značek s informačními službami

Diplomová práce. Rozvrh hodin pro

Možnosti tisku v MarushkaDesignu

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Programování v Javě I. Únor 2009

Abstraktní datové typy: zásobník

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Java aplety. Předávání parametrů z HTML

Výčtový typ strana 67

5. přednáška. Stylování a themování Themování Android Interface Definition Language Data Sdílení dat 11/29/11

Obsah. LayoutInflater. UI model KeyEvent View Tvorba vlastních komponent Canvas Matrix Vlastní EditText

REGULÁTORY SMART DIAL

APS Administrator.CR

Software602 Form Designer

Úvod do programování - Java. Cvičení č.4

IRAE 07/08 Přednáška č. 1

Multimediální prezentace MS PowerPoint I

UJO Framework. revoluční architektura beans. verze

Více o konstruktorech a destruktorech

Android 100% Java telefon. Petr Musil

IRAE 07/08 Přednáška č. 7. Začátek (head)

METODICKÝ POKYN PRÁCE S MS PowerPoint - POKROČILÍ. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.

Závěrečná práce. AutoCAD Inventor (Zadání D1)

PŘETĚŽOVÁNÍ OPERÁTORŮ

Programovací jazyk Java

Algoritmizace a programování

Car Agent. Struktura chování:

UŽIVATELSKÁ PŘÍRUČKA PRO HOMEBANKING PPF banky a.s.

Projektová dokumentace GED 2006

Mnohotvarost (polymorfizmus)

1 Nejkratší cesta grafem

Algoritmizace a programování

Dotykova obrazovka v programu TRIFID

Postup přechodu na podporované prostředí. Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Zpracování deklarací a přidělování paměti

PREPROCESOR POKRAČOVÁNÍ

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 12. Přednáška. Zjišťování polohy Google Mapy OverlayItem Zálohování.

Jazyk C# (seminář 3)

KMI / TMA Tvorba mobilních aplikací. 3. seminář ZS 2016/2017 Středa 13:15-15:45

MS SQL Server 2008 Management Studio Tutoriál

OOPR_05. Případové studie

Popis softwaru pro sledování pohybu UZ sondy

CZ E. Návod k použití Ovládací panel PU-27. Ver

7.5 Diagram tříd pokročilé techniky

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Abstraktní datové typy

MAXScript výukový kurz

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah:

MS POWERPOINT. MS PowerPoint

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

Seminář Java II p.1/43

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Transkript:

Obsah Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem Toast 2

4 oncreate(bundle savedinstancestate) { } Zavolá se při každém vytvoření activity (i při otočení displeje) Zde by měla být zavedení layoutu a inicializace widgetů Nastavení proměnných Nastavení UI Jako parametr je Bundle objekt s uloženým předchozím stavem aktivity (pokud nějaký je) Následuje onstart() 1. @Override 2. public void oncreate(bundle savedinstancestate) { setcontentview(r.layout.main); 4. super.oncreate(savedinstancestate); 5. }

5 onrestart() { } Zavolá se, když je aktivita zastavená před tím, než se znovu spustí Vždy následuje onstart() 1. @Override 2. protected void onrestart() { super.onrestart(); 4. }

onstart() { } Zavolá se, když je aktivita viditelná uživatelem Následuje: onresume() pokud se aktivita dostane do popředí onstop() pokud přestane být viditelná 1. @Override 2. protected void onstart() { super.onstart(); 4. } 6

onresume() { } Zavolá se, pokud je aktivita na popředí V tento moment je aktivita na vrcholu zásobníku Aktivita nyní přijímá vstup od uživatele Vždy následuje onpause() 1. @Override 2. protected void onresume() { super.onresume(); 4. } 7

onpause() { } Zavolá se, pokud aktivita přestane být na popředí Při stisku tlačítka HOME Při přechodu na jinou activitu Doporučená implementace: Uložení neobnovitelných dat Ukončení všech animací a operací náročných na CPU Např. přerušení GPS a jiných senzorů Uvolnění různých zámků (screenlock, wakelock ) Operace by měly být časově nenáročné Po skončení této metody může být proces zabit 1. 2. 4. 5. 6. 7. @Override protected void onpause() { wakelock.release(); locationmanager.removeupdates(locationlistener); savechanges(); super.onpause(); } 8

9 onstop() { } Zavolá se, pokud aktivita již není viditelná (před tím mohla být např. překryta jinou průhlednou aktivitou) Následuje: onrestart() Pokud se aktivita vrátí do viditelného stavu ondestroy() Pokud se aktivita ukončí Zabití procesu pokud systém potřebuje prostředky 1. @Override 2. protected void onstop() { super.onstop(); 4. }

10 ondestroy() { } Poslední metoda, která se zavolá před tím než je aktivita ukončena Následuje ukončení aktivity 1. @Override 2. protected void ondestroy() { super.ondestroy(); 4. }

11 Ukládání stavu aktivity Při změně orientace se aktivita ukončí a zvonu vytvoří onsaveinstancestate(bundle outstate) ukládání stavu aktivity (proměnné, Views ) Zavolá se pokud aktivita přejde do pozadí (před onstop) Defaultní implementace se stará o většinu UI elementů Obsah proměnných se ukládá do outstate Obnovení stavu v oncreate(bundle savedinstancestate)

12 Bundle Třída sloužící k mapování jakýchkoli Serializable nebo Parcelable objektů Mapuje se pomocí String -ových klíčů Vkládání: 1. 2. 4. Bundle bundle=new Bundle(); bundle.putstring("klíč", "hodnota"); bundle.putint("číslo", 1); bundle.putserializable("cokoli serializovatelného", new Integer(3)); Získávání: 1. 2. String s = bundle.getstring("klíč"); //nebo (String)bundle.get("klíč"); int i = bundle.getint("číslo"); Integer integer = (Integer) bundle.get("cokoli serializovatelného");

Ukládání stavu aktivity Uložení proměnné count: 1. 2. 4. 5. @Override protected void onsaveinstancestate(bundle outstate) { outstate.putint("count", count); super.onsaveinstancestate(outstate); } Obnovení: 1. 2. 4. 5. 6. 7. 8. @Override protected void oncreate(bundle savedinstancestate) { if(savedinstancestate!=null){ count = savedinstancestate.getint("count"); }... super.oncreate(savedinstancestate); } 13

14 Spouštění aktivit Aktivity se spouštějí pomocí startactivity(intent); nebo startactivityforresult(intent, requestcode); Historie aktivit se ukládá do zásobníku Pomocí Intentu se definuje, jaká aktivita se jak spustí 1. Context context = this; 2. Intent i = new Intent(context, NewActivity.class); startactivity(i);

15 Context Abstraktní třída, od které dědí komponenty aplikace Poskytuje základní funkčnost společnou pro všechny komponenty Přístup ke zdrojům Přístup k třídám Spouštění Aktivit a služeb Vysílání a odchytávání Intentů

Intent Prostředek pro komunikaci mezi komponentami Může obsahovat: Jednoznačný identifikátor komponenty Extras Flags (přednáška 7) 1. 2. 4. Intent intent = new Intent(); intent.setclass(this, NewActivity.class); intent.putextra("count", count); intent.setflags(intent.flag_activity_clear_top); 16

17 Intent jednoznačný identifikátor Slouží pro specifikování, jaká konkrétní třída se má po odeslání Intentu spustit Metoda má 2 parametry: Context odkaz na aktuální komponentu Class třída, která se má po odeslání intentu spustit intent.setclass(this, NewActivity.class);

Intent extra Slouží pro předávání hodnot mezi komponentami Používá se stejné mapování jako u Bundle Lze předat jakýkoli Serializable nebo Parcelable objekt Mapuje se pomocí Stringů intent.putextra("count", count); 18

Intent flags Určuje, jak se spustí nová aktivita Hodnoty: Intent.FLAG_ACTIVITY_NO_ANIMATION; Vypne animace při spouštění dané aktivity Intent.FLAG_ACTIVITY_NO_HISTORY; Spouštěná aktivita se neuloží do zásobníku Jakmile z ní uživatel vyjede, aktivita se ukončí Intent.FLAG_ACTIVITY_CLEAR_TOP; Pokud již je spouštěná aktivita v zásobníku, obnoví se a všechny aktivity nad ní budou ukončeny Intent.FLAG_ACTIVITY_REORDER_TO_FRONT; Pokud již je spouštěná aktivita v zásobníku, obnoví se a přesune se navrch zásobníku Intent.FLAG_ACTIVITY_SINGLE_TOP; Pokud je spouštěná aktivita na vrcholu zásobníku, obnoví se a nespustí se nová 19

20 Launchmode Jak se spustí daná aktivita se také dá napevno určit v AdroidManifest.xml atributem android:launchmode Analogie ke konstantám FLAG_ACTIVITY_* v Intentu Může nabývat těchto hodnot: standard, singletop, singletask a singleinstance

21 Aktivita očekávající výsledek Pomocí startactivityforresult(intent, requestcode); spustíme aktivitu, od které očekáváme, že nám po ukončení vrátí výsledek Nastavením requestcode umožníme vyfiltrování odpovědí při zpracování výsledků 1. 2. 4. 5. Context context = this; Intent i = new Intent(context, NewActivity.class); i.setflags(intent.flag_activity_no_animation Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); i.putextra("cislo", 10); startactivityforresult(i, 1);

22 Aktivita poskytující výsledek Pomocí getintent(); získáme Intent, který spustil aktivitu Pomocí setresult(resultcode, data); nastavíme výsledek, který se vrátí volající aktivitě Příkazem finish(); ukončíme aktuální aktivitu 1. 2. 4. 5. 6. 7. Intent i =getintent(); int cislo = i.getintextra("cislo", 0); Intent result = new Intent(); result.putextra("vysledek", cislo+10); setresult(result_ok, result); finish();

23 Aktivita očekávající výsledek Metoda onactivityresult se zavolá když se ukončí aktivita spuštěná pomocí startactivityforresult requestcode je stejný jako při spouštění aktivity resultcode je číslo nastavené pomocí setresult v již ukončené aktivitě data Intent s daty vrácenými aktivitou 1. 2. 4. 5. 6. 7. 8. @Override protected void onactivityresult(int requestcode, int resultcode, Intent data) { if(requestcode == 1 && resultcode==result_ok){ int vysledek=data.getintextra("vysledek", -1);... } super.onactivityresult(requestcode, resultcode, data); }

Interakce s uživatelem pomocí Toastů Toast Zpráva, jenž se zobrazí nad aktivitou Automaticky se zobrazuje a mizí nelze ji programově schovat ani nijak ovlivňovat při zobrazování Trvání zobrazení lze nastavit na dvě možnosti: Toast.LENGTH_SHORT Toast.LENGTH_LONG Pozicovatelnost nastavuje se pomocí metody setgravity(gravity) Context context = getapplicationcontext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show(); 24