Slide 1

Slide 1 text

Android Services ▪ Was sind Services? ▪ Lifecycle eines Services ▪ Wie erstelle ich einen Service? 1

Slide 2

Slide 2 text

Service? 2

Slide 3

Slide 3 text

▪ Applikationskomponente die langandauernde Operationen im Hintergrund ausführt und kein User-Interface hat Service? 2

Slide 4

Slide 4 text

▪ Applikationskomponente die langandauernde Operationen im Hintergrund ausführt und kein User-Interface hat ▪ Services können, falls gewünscht, von anderen Applikationen benutzt werden Service? 2

Slide 5

Slide 5 text

▪ Applikationskomponente die langandauernde Operationen im Hintergrund ausführt und kein User-Interface hat ▪ Services können, falls gewünscht, von anderen Applikationen benutzt werden ▪ Achtung: Services laufen im main thread des Host-Prozesses! (→Hintergrundthread für CPU-intensive oder blockierende Operationen erzeugen) Service? 2

Slide 6

Slide 6 text

▪ Applikationskomponente die langandauernde Operationen im Hintergrund ausführt und kein User-Interface hat ▪ Services können, falls gewünscht, von anderen Applikationen benutzt werden ▪ Achtung: Services laufen im main thread des Host-Prozesses! (→Hintergrundthread für CPU-intensive oder blockierende Operationen erzeugen) ▪ Zwei Erscheinungsformen: ▪ Unbounded ▪ Bounded Service? 2

Slide 7

Slide 7 text

3

Slide 8

Slide 8 text

Unbounded Service 3 ▪ Führt eine einzelne Operation durch ▪ Liefert keine direkte Rückmeldung (“fire and forget”) ▪ Sollte sich nach Abschluss der Operation selbst beenden

Slide 9

Slide 9 text

Unbounded Service 3 ▪ Führt eine einzelne Operation durch ▪ Liefert keine direkte Rückmeldung (“fire and forget”) ▪ Sollte sich nach Abschluss der Operation selbst beenden Bounded Service ▪ Komponenten können sich an Service “binden” und mit ihm kommunizieren (→android.os.Binder) ▪ Service läuft, so lange es “bound clients” gibt

Slide 10

Slide 10 text

Service Lifecycle 4

Slide 11

Slide 11 text

▪ Alternativ: android.app.IntentService verwenden und Konstruktor + onHandleIntent() implementieren ▪ Erzeugt Hintergrundthread und arbeitet eine Warteschlange von Jobs ab Service implementieren 5 ▪ Subklasse von android.app.Service erstellen und Callbacks implementieren: ▪ onStartCommand() bzw. onBind() ▪ onCreate() ▪ onDestroy()

Slide 12

Slide 12 text

Service implementieren (II) 6 ▪ Service in AndroidManifest.xml deklarieren: ▪ exported macht den Service für andere Applikationen zugänglich

Slide 13

Slide 13 text

Service benutzen 7 ▪ Service starten: ▪ Context.startService() bzw. Context.bindService() ▪ Service stoppen: ▪ Context.stopService() bzw. Context.unbindService() ▪ Mit dem Service kommunizieren: ▪ Bounded Service liefert via ServerConnection einen Binder ▪ Binder erlaubt Kommunikation mit dem Service (auch IPC)

Slide 14

Slide 14 text

▪ developer.android.com/guide/topics/fundamentals/services.html ▪ developer.android.com/reference/android/app/Service.html ▪ developer.android.com/reference/android/os/HandlerThread.html Weitere Infos 8