SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA. Dr. Iszály György Barna

Hasonló dokumentumok
Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Android alapú szoftverfejlesztés kezdőknek

3. Egyszerű komponensek

Broadcast Service Widget

Alap számológép alkalmazás

ANDROID ALKALMAZÁSFEJLESZTÉS

Image Processor BarCode Service. Felhasználói és üzemeltetői kézikönyv

Android Wear programozás. Nyitrai István

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

libgdx alapok, első alkalmazás

Programozási nyelvek Java

Osztályok. 4. gyakorlat

ANDROID ALKALMAZÁSFEJLESZTÉS

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

ANDROID ALKALMAZÁSFEJLESZTÉS

1. DVNAV letöltése és telepítése

Konkurens TCP Szerver

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

I. 288.: Utcai WiFi térkép

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Médiatár. Rövid felhasználói kézikönyv

Thermo1 Graph. Felhasználói segédlet

Concurrency in Swing

Android fejlesztés Alapok. Készítette: Kálmán Kornél (KAKQAAT.SZE)


5.6.3 Laborgyakorlat: Windows rendszerleíró adatbázis biztonsági mentése és visszaállítása

Java programozási nyelv 6. rész Java a gyakorlatban

CIB Internet Bank asztali alkalmazás Hasznos tippek a telepítéshez és a használathoz Windows operációs rendszer esetén

Android fejlesztés Alapok. Tanács Attila, Kálmán Kornél

Újdonságok a Google műhelyéből. Péter Ekler

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Számla kontroll Push üzenet szolgáltatás Gyakori kérdések

Operációs rendszerek. Tanmenet

1 Rendszerkövetelmények

Mobil Informatikai Rendszerek

OOP: Java 8.Gy: Abstract osztályok, interfészek

Dr. Schuster György október 14.

Telepítési útmutató. 1.1 lépés : Telepítés típusa - ablak :

SZÁMLA KONTROLL PUSH ÜZENET GYAKORI KÉRDÉSEK

Java-s Nyomtatványkitöltő Program Súgó

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows7 operációs rendszer és Internet Explorer 8-es verziójú böngésző esetén

A Java nyelv. Dialógus ablakok. Elek Tibor

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Programozási nyelvek Java

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

E-építési napló offline vezetése

WIN-TAX programrendszer frissítése

UI megismerése - 2. rész Adattárolás

OOP #14 (referencia-elv)

Távolléti díj kezelése a Novitax programban

Operációs rendszerek. Tanmenet

Ismerkedés az új felülettel

9. óra operációs rendszerek. Grafikus operációs rendszer

és az instanceof operátor

TERC V.I.P. hardverkulcs regisztráció

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Enterprise JavaBeans 1.4 platform (EJB 2.0)

A TERC VIP költségvetés-készítő program telepítése, Interneten keresztül, manuálisan

A telepítési útmutató tartalma

A Novitax ügyviteli programrendszer első telepítése

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

Mobil Informatikai Rendszerek

Felhasználói leírás: STAHL Ex-Tool v1.0 rev

e-nhh ELEKTRONIKUS RLAPOK ÜGYFÉLOLDALI FELÜLETEI

Java programozási nyelv 5. rész Osztályok III.

TERKA Törvényességi Ellenőrzési Rendszer Kiegészítő Alkalmazás

Segédanyag: Java alkalmazások gyakorlat

KIRA. KIRA rendszer. Telepítési útmutató v1

FELHASZNÁLÓI ÚTMUTATÓ

Android Pie újdonságai

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

ANDROID ALKALMAZÁSFEJLESZTÉS

WordPress segédlet. Bevezető. Letöltés. Telepítés

Java II. I A Java programozási nyelv alapelemei

Objektumorientált programozás C# nyelven

Grafikus felhasználói felületek, eseménykezelés

2. modul - Operációs rendszerek

Geotechnika II. (NGB-SE005-2) Geo5 használat

Selling Platform Telepítési útmutató Gyakori hibák és megoldások

UI megismerése, különböző felbontások támogatása, használati jogok kérése

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Felhasználói kézikönyv - Android kliens

JAVA PROGRAMOZÁS 2.ELŐADÁS

Java-s Nyomtatványkitöltő Program Súgó

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Programozás C++ -ban 2007/7

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Felhasználói felület megismerése, különböző felbontások támogatása

Tanúsítvány feltöltése Oberthur kártyára és Oberthur SIM termékre. Windows 7, Windows 8, Windows 8.1 és Windows 10-es operációs rendszeren 1(9)

Firmware frissítés (ROM Update)

A Canvas LMS új és régi felülete közti különbségek

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

Általános nyomtató meghajtó útmutató

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak.

Molnár Mátyás. Bevezetés a PowerPoint 2010 használatába. Csak a lényeg érthetően!

Java és web programozás

Windows 8.1 frissítés, részletes útmutató

AWK programozás, minták, vezérlési szerkezetek

VARIO Face 2.0 Felhasználói kézikönyv

Átírás:

SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA Dr. Iszály György Barna

ERŐFORRÁSOK Az alkalmazások által használt erőforrások jól különválnak az őket kezelő forráskódoktól A készülék egyedi tulajdonságaihoz lehet igazítani az erőforrásokat Típusuk alapján az erőforrások lehetnek: Képek Hanganyagok Animációk Menük Stílusok Színek Szöveges tartalmak A felhasználói felületet leíró layout xml állományok

ERŐFORRÁSOK Segítségükkel a kód változtatása nélkül készülhetünk fel az alkalmazásunk különböző környezetben való futtatására Valamennyi erőforrás hivatkozhatóvá válik forráskódból az SDK által (Android Asset Packaging Tool - aapt) kezelt R.java nevű állományon keresztül Az R.java állományban statikus int típusú változókkal leírható valamennyi erőforráselem A fájl frissítése az erőforrások mentésekor történik A forráskódban az erőforrásokra a következőképen lehet: Button okbutton = (Button) findviewbyid(r.id.okbutton);

PÉLDA R.JAVA ÁLLOMÁNYRA package com.example.file_teszt; public final class R { public static final class attr { } public static final class drawable { public static final int ic_launcher=0x7f020000; } public static final class id { public static final int menu_settings=0x7f070005; public static final int okbutton=0x7f070002; public static final int text1=0x7f070000; }

ERŐFORRÁSOK Az erőforráselemek a projekt gyökérmappájában, a res mappában helyezkednek el Típusuk alapján külön mappákba elhelyezkedve: drawable mappák: a képek, bitmap-ek, ikonok számára layout: a felhasználói felületek, activityk leírására menu: menük leírására values: témák, szöveges erőforrások tárolására animator: animációk leírására color: színek megadásához

ERŐFORRÁSOK A mappák elnevezése egy, vagy több qualifier (minősítő) segítségével módosítható A minősítők használatának szabályai: Kötőjellel választjuk el őket az eredeti névtől, vagy egymástól, ha több is van. Például: values-hu-v11 jelentése magyar lokalizációjú, API 11-es verziójú eszközök számára használható values mappa. A különböző típusú minősítők csak előre meghatározott, kötött sorrendben használhatók. A values-v11-hu nem használható! http://developer.android.com/guide/topics/resources/providing-resources.html#table2 A minősítővel ellátott mappát ne ágyazzuk az eredetibe be! Ne használjuk a values/values-hu mappaszerkezetet! Ugyan nem érzékenyek a kis-nagybetű eltérésekre, azonban a fordító kisbetűs változatra fordítja az elnevezéseket. Minden minősítőfajtából egyszerre csak egy érték használható az erőforrásmappa elnevezésében. Ne használjunk pl. values-en-hu elnevezést!

ACTIVITY Az alkalmazásnak egy olyan fontos része, amivel a program felhasználója interakcióba léphet Minden Activity egy ablakot biztosít a számunkra Egy alkalmazás általában több Activity-ből áll Van egy kijelölt Activity, amelyik a futtatáskor először jelenik meg Egy Activity elindíthat más Activity-ket Valahányszor egy Activity elindul, az előző Activity leáll, de a rendszer megőrzi ennek az előző tevékenységnek az állapotát a háttér veremben (back stack) Az új Activity indulásakor bekerül a stack tetejére, majd a rendszer elkezdi futtatni. A verem LIFO elvű a Back (Vissza) gomb hatására az ezt megelőző tevékenység kerül elő a veremből, és annak futása folytatódik

ACTIVITY Az Activity megvalósítása az Activity osztály egy alosztályaként deklarálva lehetséges. Amikor egy tevékenység egy másik tevékenység indulása miatt leállításra kerül, értesítést kap erről úgynevezett callback metódusok segítségével. Számos callback metódus létezik: kaphat ilyet az operációs rendszertől létrehozásakor, leállításakor, folytatása, vagy törlése esetén. Így az állapotváltozásra egy megfelelő eseménnyel reagálhat a tevékenység A tevékenység folytatásakor a félbeszakított tevékenységek folytathatók

AZ ACTIVITY ÉLETCIKLUSA

AZ ACTIVITY ÉLETCIKLUSA 1. Running Az Activity az előtérben fut (a stack tetején helyezkedik el), ez az aktív, vagy futó állapot (running). Ilyenkor az Activity fókuszban van. 2. Paused Ha az Activity elvesztette a fókuszt, de még látható, akár részben is Teljes mértékben élő maradhat, abban az értelemben, hogy az összes állapot- és taginformációját megőrizheti és csatlakoztatva marad az ablakkezelőhöz. Az operációs rendszer extrém alacsony memóriaállapotot érzékel akkor törölheti az Activityt.

AZ ACTIVITY ÉLETCIKLUSA 3. Stopped Ha az Activityt egy másik tevékenység teljes egészében letakarja, akkor leállítódik (stopped). Minden állapot- és taginformációja megőrződik ugyan, de nem lesz látható a felhasználó számára az ablaka Gyakran törlésre kerülhet az operációs rendszer által 4. Finished, vagy killed Szünetelő, vagy leállított állapotú Activity esetén tehát az operációs rendszer bármikor kérheti az Activity befejezését (finished), vagy egyszerűen kitörölheti azt (killed). Az Activity újbóli megnyitásához ilyenkor újra teljes egészében létre kell hozni azt.

ACTIVITY ÉLETTARTAMA 1. Teljes élettartam (entire lifetime) Az Activity azon életciklusa, amely az oncreate() metódus első hívása és az ondestroy() utolsó hívása között zajlik. Egy Activitynek minden globális beállítást el kell végezni az oncreate() híváskor és minden esetleg megmaradt erőforrástel kell engedjen az ondestroy() esetében. 2. Látható élettartam (visible lifetime) Az onstart() és az onstop() metódusok meghívása között rész. Az operációs rendszer többször is meghívhatja ezeket a metódusokat az Activity teljes élettartama során, hiszen az Activity láthatósága változhat, ahogy változnak a tevékenységek. 3. Előtérben töltött élettartam (foreground lifetime) Az onresume() és onpause() metódusok hívása között részl. Az Activity nemcsak látható, de előtérben van, birtokolja a fókuszt is. Mivel ilyen váltás gyakranelőfordulhat, ezért ajánlott, hogy az ehhez tartozó kód kicsi, gyorsan lefutó legyen, elkerülendő a felhasználói élmény csorbulását.

CALLBACK METÓDUSOK Metódus Leírás Leállítható? oncreate() Az Activity létrehozásakor hívódik. Ekkor kell az összes statikus beállítást elvégezni nézetek létrehozása, adatok kötése listákhoz, stb. A metódus egy Bundle objektumot kap, ami tartalmazza az Activity korábbi állapotát, ha voltilyen. Nem Következő metódus onstart() onrestart() A leállított Activity újra elindítása előtt közvetlenül hívódik meg. Mindig az onstart() metódus követi. Nem onstart() Leállítható? az operációs rendszer törölheti-e bármikor az Activityt kiszolgáló folyamatot az adott callback metódus lefutása után egyetlen további sor futtatása nélkül

CALLBACK METÓDUSOK Metódus Leírás Leállítható? Következő metódus onstart() Az Activity felhasználója előtt láthatóvá válása előtt kerül meghívásra. Ha az Activity előtérbe kerül, az onresume() követi, ha rejtetté válik, akkor az onstop() hívódik meg. Nem onresume() onresume() Akkor hívódik meg, amikor egy tevékenység interaktívvá válik a felhasználó számára. Ekkor az Activity a stack tetején van, készen áll a felhasználói interakcióra. Mindig az onpause() metódus követi őt. Igen onpause()

CALLBACK METÓDUSOK Metódus Leírás Leállítható? onpause() Akkor hívódik, amikor az operációs rendszer egy másik Activityt készül folytatni, vagy újraindítani. Általában a mentetlen adatok rögzítésekor, animációk leállításakor, és más processzor igényes tevékenységekhez köthető. A megvalósításnak nagyon gyorsnak kell lennie, mivel a következő Activity nem folytatódik addig, amíg ez be nem fejeződik. Vagy az onresume() metódus követi, ha az Activity az előtérbe tér vissza, vagy az onstop(), ha láthatatlanná válik a felhasználó számára. 3.0 verzió előtt Következő metódus onresume(), vagy onstop()

CALLBACK METÓDUSOK Metódus Leírás Leállítható? onstop() ondestroy() Az Activity nem látható már a felhasználó számára. Ez fakadhat abból, hogy az Activity megszűnt, de abból is, hogy egy másik új, vagy már létező Activity (újra)indítódott és eltakarja ezt a képernyőn. Az onrestart() metódus követi, ha a tevékenység a felhasználó számára interaktív állapotba kerül vissza, vagy az ondestroy(), ha az Activity végleg meg fog szűnni. Az utolsó metódus az Activity megszűnése előtt. Bekövetkezhet a finish() metódus hívása okán (be akarjuk fejezni az Activityt), vagy azért, mert az operációs rendszer hely megtakarítása végett ideiglenesen megszünteti. Az isfinishing() metódussal lehet különbséget tenni a kettő között (true, vagy false). igen Igen Következő metódus onrestart(), vagy ondestroy() nincs

ACTIVITY ÁLLAPOTÁNAK TÁROLÁSA onsaveinstancestate() Amikor a felhasználó elhagyja az Activity-t akkor hívódik meg. Ennek a callback metódusnak a felülírásával lehet további adatokat elmenteni az Activity-nk állapotáról. Egy Bundle osztálybeli elemet ment el. Az Activity újra létrehozásakor a Bundle objektum kerül átadásra az oncreate() és az onrestoreinstancestate() metódusoknak.

PÉLDA AZ ACTIVITY ÁLLAPOTÁNAK MENTÉSÉRE static final String STATE_SCORE = "playerscore"; static final String STATE_LEVEL = "playerlevel";... @Override public void onsaveinstancestate(bundle savedinstancestate) { // Save the user's current game state savedinstancestate.putint(state_score, mcurrentscore); savedinstancestate.putint(state_level, mcurrentlevel); } // Always call the superclass so it can save the view hierarchy state super.onsaveinstancestate(savedinstancestate);

PÉLDA AZ ACTIVITY ÁLLAPOTÁNAK VISSZAÁLLÍTÁSÁRA @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // Always call the superclass first } // Check whether we're recreating a previously destroyed instance if (savedinstancestate!= null) { // Restore value of members from saved state mcurrentscore = savedinstancestate.getint(state_score); mcurrentlevel = savedinstancestate.getint(state_level); } else{ // Probably initialize members with default values for a new instance }...