seminarvortrag · activities anwendungskomponente, die eine interaktion für den benutzer...
TRANSCRIPT
SEMINARVORTRAGANDROID ENTWICKLUNG
ETIENNE KÖRNER – EMBEDDED SYSTEMS – SS2013 - HSRM
ÜBERSICHT
Android
Android DalvikVirtuelle Maschine
Android und Desktop Applikationen
Android Entwicklung
Tools
R
Activity Lifecycle
Quellen
ANDROID
Linux-basiertes Betriebssystem für mobile Geräte
Entwickelt durch Android Inc.
Weiterentwicklung durch Open Handset Alliance
> 1.000.000 Geräteaktivierungen pro Tag
> 1.500.000.000 App Downloads pro Monat
ANDROID DALVIKVIRTUELLE MASCHINE
Dalvik-VM (~Java-VM)
Tool „dx“ erzeugt ausführbare .dex
Rechteverwaltung für Hardware
Modularität in Android
Apps für Funktionen ersetzbar
z.B. Kamera, SMS, etc...
ANDROID UND DESKTOP APPLIKATIONEN
Verschiedene Laufzeitstati (siehe Lifecycle)
Mehrfachausführung einer Applikation (nicht bei Android)
Mehrere Apps gleichzeitig (vergleich Taskbar Windows)
Widgetunterstützung
ANDROID ENTWICKLUNG
Style Guides
DIE (ADT Bundle)
Apps bestehen aus Activities
Activities sind sichtbare „Bildschirme“, wobei die Activities nicht das Design sondern die Funktion dahinter sind.
Das Design ist austauschbar
Das Design sind Layouts (XML-Dateien beschreiben was, wo, wie steht)
WAS WIRD BENÖTIGT?
WOMIT WIRD GETESTET?
WIE WIRD PROGRAMMIERT?
TOOLS
Linux / Windows / Mac
Java
ADT Bundle (z.B.)
SDK
Eclipse
Android Development Tools
WAS WIRD BENÖTIGT?
WOMIT WIRD GETESTET?
WIE WIRD PROGRAMMIERT?
OPTION #1 - EMULATOR
Virtuelles Gerät
App kann direkt auf dem Gerät (emuliert, oder reales Gerät) ausgeführt werden
Testen verschiedener Größen & Seitenverhältnisse
Simulation von Interrupts (SMS, eingehender Anruf, …)
Simulation von Netzverlust (HSPA-Verbindungsabbruch)
Kameranutzung über Webcam / Laptop Kamera
Sensoren eines über USB angeschlossenen Android Gerätes nutzbar
EMULATOR
EMULATOR
EMULATOR
EMULATOR
OPTION #2 – ANDROID GERÄT
Setzt Android Gerät vorraus
Verbindung mit dem Entwicklungsrechner über USB
Erscheint in Ausführungsauswahlfenster
Eventuell benötigter USB – Treiber
Schneller, aber nur eine Größe/Hardware testbar
WAS WIRD BENÖTIGT?
WOMIT WIRD GETESTET?
WIE WIRD PROGRAMMIERT?
LAYOUT
Layouts über XML-Dateien beschrieben
XML-Dateien beinhalten Elemente
ein Wurzelelement
Hinzufügen weiter Elemente zum Wurzelelement
LINEAR LAYOUT
Rückt alle Elemente in eine Reihe oder Spalte
Breite/Höhe abhängig vom größten Element
LinearLayout in LinearLayout für mehrere Elemente
http://developer.android.com/images/ui/linearlayout.png
RELATIVE LAYOUT
Relative Positionen
Position werden angegeben
android:layout_toLeftOf="@id/viewID"
android:layout_below= "@id/viewID"
android:layout_alignLeft="@id/viewID"
android:layout_centerHorizontal="true"
Es gibt noch weitere Möglichkeiten
http://developer.android.com/images/ui/relativelayout.png
R
Generierte Datei, wird beim build erzeugt
Speichert Verweise zu Strings / IDs / Bilder / Layouts / …
Zugriff auf Elemente über R
Button myButton = (Button) findViewById(R.id.my_button);
ADT hilft Ordnung zu behalten
z.B. Text für Button vorgeben
R
R
R
R
ACTIVITIES
Anwendungskomponente, die eine Interaktion für den Benutzer bereitstellt
z.B. Anruf tätigen, Foto aufnehmen
Eine „main“ Activity, sichtbar nach Start der Applikation
Activities laden Layout XML sichtbarer Teil der Activity
Eine Applikation bestehen aus beliebig vielen Activities
Neue Activity aufrufen „noch“ aktuelle wird gestoppt und auf den „Back Stack“ gelegt
BACK STACK
Vergleich Kartenstapel
Nur oberstes Element ist sichtbar
Neue Activities werden oben auf dem Stack platziert, darunter liegende gestoppt
http://developer.android.com/images/fundamentals/diagram_backstack.png
http://developer.android.com/images/fundamentals/diagram_backstack_singletask_multiactivity.png
ACTIVITY LIFECYCLE
Scheinbar immer an
Zustände können weggespeichert werden
Activity
gestartet
Aufruf der Activity
#1
Activity
gestartet
onCreate()
Aufruf der Activity
#1
Activity
gestartet
onCreate()
onStart()
Aufruf der Activity
#1
Activity
gestartet
onCreate()
onStart()
onResume()
Aufruf der Activity
#1
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
Aufruf der Activity beendet
Activity ist fertig initialisiert und läuft
#1
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
Eine andere Activity drängt sich in den
Vordergrund – Nutzereingaben sichern!
#1
protected void onSaveInstanceState(Bundle icicle) { super.onSaveInstanceState(icicle); icicle.putLong("param", value);
}
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
onStop()
„Andere“ Activity läuft und die bisherige ist
nun nicht mehr sichtbar
#1
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
onDestroy()
onStop()
Activity beendet sich oder wird vom System
gekilled
#1
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
onDestroy()
onStop()
Activity
beendet
Activity wird nicht mehr ausgeführt / ist
beendet
#1I‘m done
but wait…
there‘s more!
ACTIVITY LIFECYCLE
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
Activity zurück im Vordergrund (durch
Benutzernavigation z.B.)
#2
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
Eine App mit höherer Priorität braucht
Speicher
onStop()
App Prozess
gekilled
#3
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
User navigiert zur Activity
onStop()
App Prozess
gekilled
#3
public void onCreate(Bundle icicle) { value = icicle.getLong("param");
}
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
User navigiert zurück zu nicht-sichtbarer
Activity
onStop()
App Prozess
gekilled
onRestart()
#4
Activity
gestartet
Activity läuft
onCreate()
onStart()
onResume()
onPause()
Gesamtübersicht
onStop()
App Prozess
gekilled
onRestart()
#4
onDestroy()Activity
beendet
INHALT EINES PROJEKTS
src Quellcode
gen generierter Code (R.java)
libs eingebundene Libraries
res Resources
Drawables (Bilder in verschiedenen Größen/Auflösungen)
Layouts (XML Dateien)
Values (z.B. strings.xml)
Manifest Datei
DEMO – ACTIVITY LIFECYCLE
QUELLEN (INFORMATIONEN)
„Android 4“ von Thomas Künneth
developer.android.com
QUELLEN (BILDER)
http://developer.android.com/images/sdk-cube.png
http://www.androidguys.com/wp-content/uploads/2012/01/android_dead.jpg
http://www.empowernetwork.com/alphamatter/files/2013/03/Android-Icon-waving.jpg
http://andymorton.org/wp-content/uploads/2011/03/android-reading.png
http://developer.android.com/images/ui/linearlayout.png
http://developer.android.com/images/ui/relativelayout.png
http://developer.android.com/images/fundamentals/diagram_backstack.png
http://developer.android.com/images/fundamentals/diagram_backstack_singletask_multiactivity.png
FRAGEN?