Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

News Modul Überblick und Erweiterung

Ähnliche Präsentationen


Präsentation zum Thema: "News Modul Überblick und Erweiterung"—  Präsentation transkript:

1 News Modul Überblick und Erweiterung
Benjamin Koppe DVA-Seminar WS 2012/2013

2 Was erwartet uns heute? News Modul Aktualisierung der Daten
Kommunikation mit dem CMS Aktualisierung der Daten Implementierung eines AsyncTask Datenhaltung SQLite GreenDAO

3 News Modul

4 News Modul

5 News Modul Infopark CMS Fiona (https://cms.hs-augsburg.de/)
Kommunikation über XML Schnittstelle Content Retrieval and Update Language (CRUL)

6 News Modul

7 Aktualisierung der Daten

8 Aktuelle Situation Aktualisierung findet momentan im UI-Thread statt
Nachteile: UI-Thread wird blockiert App wird schlimmstenfalls beendet Erweiterung: Auslagerung in einen AsyncTask

9 AsyncTask - Definition
gedacht für die Ausführung kurzer Aufgaben „Berechnung” läuft im Hintergrund Ergebnis wird an den UI-Thread geschickt (ohne selbst Handler oder Threads verwenden zu müssen) AsyncTask ermöglicht also die richtige Verwendung des UI-Threads AsyncTask versteht sich nicht als Threading- Framework, sondern als Hilfsklasse

10 AsyncTask - Definition
private class OurAsyncTask extends AsyncTask<Void, Void, Void> {…} Params: Typ der zu berechnenden Parameter Progress: Typ des Fortschritts Result: Ergebnistyp der „Berechnung”

11 AsyncTask - Definition
onPreExecute() wird im UI-Thread aufgerufen, bevor der eigentliche Task startet wird normalerweise verwendet um das GUI vorzubereiten (z.B. Fortschrittsanzeige einblenden) doInBackground(Params) wird im Hintergrund ausgeführt Aufruf findet unmittelbar nach onPreExecute() statt hier findet die eigentliche „Berechnung“ statt publishProgress(Progress…) kann verwendet werden um den Fortschritt anzuzeigen mittels onProgressUpdate() kann nun wiederum der UI-Thread manipuliert werden onProgressUpdate() wird im UI-Thread ausgeführt wenn publishProgress() aufgerufen wird die Berechnung im Hintergrund wird weiterhin ausgeführt onPostExecute(Result) wird im UI-Thread ausgeführt sobald die Aufgabe im Hintergrund abgeschlossen ist

12 AsyncTask muss als Kindklasse von AsyncTask implementiert werden
doInBackground() muss vorhanden sein die Ausführung gestaltet sich sehr simpel new DemoTask().execute(url1, url2, url3);

13 AsyncTask - Cancelling
Ein Task kann durch Aufruf von cancel() auch abgebrochen werden isCancelled() gibt dann TRUE zurück anstatt onPostExecute() wird onCancelled() aufgerufen sobald doInBackground() terminiert nach Möglichkeit sollte isCancelled() in der doInBackground()-Methode ständig überprüft werden, um sicherzustellen, dass der Task schnellst möglich abgebrochen wird

14 Datenhaltung

15 Aktuelle Situation Daten werden nicht gespeichert Nachteile:
Nachrichten werden bei jedem Öffnen des Moduls erneut geladen Internetverbindung ist Voraussetzung Erweiterungen: Caching der Nachrichten in einer Datenbank Einführung eines Update-Intervalls

16 Datenbankzugriff mit Android
Beispiel: Kontakte Kontakt muss als (Java)-Objekt verwendet werden können Implementierung einer Model-Klasse mit getter- und setter-Methoden Datenbank Handler Klasse (SQLiteOpenHelper) onCreate() – enthält create table statements. Wird aufgerufen, wenn die DB erstellt wird. onUpgrade() – wird aufgerufen wenn die DB verändert wird.

17 GreenDAO - Überblick Open-Source-Projekt
Mapping von Java-Objekten zu Datenbanktabellen create, read, update, delete über einfache API Vorteile: Performance leicht verständliche API speziell für Android minimaler Speicherverbrauch kleine Library

18 GreenDAO - Verwendung

19 GreenDAO – Generator Projekt
Schema erstellen (mit Version und Package) Schema schema = new Schema(1, "de.hsa.greendaoexample"); Entity erstellen Entity contact = schema.addEntity(“Contact"); contact.addIdProperty(); contact.addStringProperty("name"); contact.addStringProperty(“phoneNumber"); Code generieren DaoGenerator daoGenerator = new DaoGenerator(); daoGenerator.generateAll(schema, “../Example/src-gen");

20 GreenDAO – Android Projekt
DaoMaster Startpunkt für GreenDAO hält SQLiteDatabase-Objekt kümmert sich um die DAO-Klassen (nicht Objekte!) statische Methoden zum Erstellen und Löschen von Tabellen DaoSession kümmert sich um alle verfügbaren DAO-Objekte in einem Schema Zugriff erfolgt über die getter-Methoden DAOs Data Access Object kapselt den Zugriff auf eine Datenquelle Folge: Datenquelle kann ausgetauscht werden kann, ohne dass der aufrufende Code geändert werden muss Entities Persistente Objekte Repräsentieren einen Datensatz als POJO

21 GreenDAO – Initialisierung
helper = new DaoMaster.DevOpenHelper(this, „contacts.db", null); db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); contactDao = daoSession.getContactDao();

22 GreenDAO – QueryBuilder
Abfragen können mittels SQL abgesetzt werden Alternative: QueryBuilder API Abfrage aller User mit Vornamen Joe, sortiert nach Nachnamen List joes = contactDao.queryBuilder() .where(Properties.Name.eq(“DVA")) .orderAsc(Properties.PhoneNumber) .list();

23 Vielen Dank für eure Aufmerksamkeit!

24 Quellen Satya Komatineni, Dave MacLean, Sayed Hashimi: Pro Android 3. Apress, 2011


Herunterladen ppt "News Modul Überblick und Erweiterung"

Ähnliche Präsentationen


Google-Anzeigen