Android Processes & Services



Ähnliche Dokumente
Szenario 3: Service mit erweiterter Schnittstelle

2. Hintergrundverarbeitung in Android: Services und Notifications

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Übungen zur Android Entwicklung

Mobile und Verteilte Datenbanken

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Mobile App Development - Multitasking -

Verteilte Systeme CS5001

Übung: Verwendung von Java-Threads

GeoPilot (Android) die App

Mobile Anwendungen Google Cloud Messaging

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen.

Powermanager Server- Client- Installation

Objektorientierte Programmierung. Kapitel 12: Interfaces

Java: Vererbung. Teil 3: super()

Java Kurs für Anfänger Einheit 5 Methoden

Einrichtungsanleitungen Hosted Exchange 2013

Programmieren in Java

:: Anleitung Hosting Server 1cloud.ch ::

Innere Klassen in Java

Lizenz-Server überwachen

Grundlagen der Programmierung APPLETS

Konfigurationsanleitung Tobit David Fax Server mit Remote CAPI Graphical User Interface (GUI) Seite - 1 -

Gesicherte Prozeduren

Beispiel droidremoteppt

Prinzipien Objektorientierter Programmierung

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Der lokale und verteilte Fall

Kompatibilitätsmodus und UAC

WebService in Java SE und EE

HowTo: Einrichtung & Management von APs mittels des DWC-1000

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version oder Wechsel von Version auf Version 3.0.

Upgrade-Leitfaden. Apparo Fast Edit 1 / 7

Netzwerk-Migration. Netzwerk-Migration IACBOX.COM. Version Deutsch

Tel.: Fax: Ein Text oder Programm in einem Editor schreiben und zu ClassPad übertragen.

WPF Steuerelemente Listbox, ComboBox, ListView,

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Objektorientierte Programmierung

U08 Entwurfsmuster (II)

Automatische Installation (wenn das SSO-Applet nicht vorhanden ist)! Abbildung 1:Auswahldialog für Installationslaufwerk

Große Übung Praktische Informatik 1

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Download unter:

Client-Server-Beziehungen

Übungen zu Softwaretechnik

MSDE 2000 mit Service Pack 3a

SSH Authentifizierung über Public Key

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Mobile App Development. - Alarm -

Android-Apps weitere Möglichkeiten

Themen. Web Service - Clients. Kommunikation zw. Web Services

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Remote Method Invocation

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Installation SelectLine SQL in Verbindung mit Microsoft SQL Server 2014 Express with management tools

Internet Explorer Version 6

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

2.2 Prozesse in Java

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

ArchivCam / MotionCam

Urlaubsregel in David

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

Switching. Übung 7 Spanning Tree. 7.1 Szenario

GUI Programmierung in Java

Typumwandlungen bei Referenztypen

DocuWare unter Windows 7

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

3 Objektorientierte Konzepte in Java

Anforderungen an die HIS

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober FH-Gieÿen-Friedberg Android Praktikum

Wissenswertes über LiveUpdate

Übungen zur Softwaretechnik

snom Auto-Provisioning

4. Software-Kompponenten in Android Broadcast Intents und Broadcast Receivers. Broadcast Intents

3. Stored Procedures und PL/SQL

DCOM??? Seite 1

Javakurs zu Informatik I. Henning Heitkötter

Schritt 1 - Ein Spielfeld

Synchronisation in Java. Invisible Web

Mobile und Verteilte Datenbanken

Xylem WebService Demo Kurzbedienungsanleitung

Java RMI Remote Method Invocation

Das Starten von Adami Vista CRM

Advolux Konsolen- und Unattended-Installation

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

eduvote Ein Umfragesystem für Lehrveranstaltungen - PowerPoint Add-In -

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Java Einführung Abstrakte Klassen und Interfaces

Transkript:

Android Processes & Services Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 4 besprechen (inkl. Repetition) Sie verstehen die Konzepte Process, Thread, Service in Android und können diese einsetzen. Sie verstehen den RPC Mechanismus von Android. 2 1

Arbeitsblatt 4 File Settings.java File settings.xml mit Root Element PreferenceScreen und den Widget Elementen CheckboxPreference, EditTextPreference Eintrag der neuen Activity im Manifest File Settings über Default Menu öffnen oncreateoptionsmenu() MenuInflater aus menu.xml onoptionsitemselected() Settings Activity starten 3 Process Default Verhalten Beim Start wird für eine Android Applikation ein Prozess mit einem Thread hochgefahren. Alle weiteren Komponenten laufen in diesem Prozess und diesem Thread. Es ist möglich: Komponenten in anderen Process laufen zu lassen. Kontrolle über das Manifest File (siehe Attribute "Process"). Aus dem Process weitere Threads zu starten. 4 2

Application Not Responding (ANR) Problem Demo Reaktionsverhalten auf User Input ist entscheidend für die Akzeptanz einer Applikation Das Android System überprüft die Reaktionszeit einer Applikation und wird bei schlechtem Antwortverhalten mit einen entsprechenden Dialog reagieren 5 Triggers für ANR Dialog Android kontrolliert das Antwortverhalten über den Activity Manager und den Window Manager. Folgende Bedingungen lösen den ANR Dialog aus: Keine Reaktion auf einen Input Event (Touch Event, Key Press) innerhalb von 5 sec Ein BroadcastReceiver kann einen BroadcastEvent nicht innerhalb von 10 sec verarbeiten 6 3

Vorgehensweise Ausgangslage Eine Android Applikation läuft in einem Single (= Main) Thread. Dies bedeutet, dass jede umfangreiche Operation den ANR auslösen kann, da während dieser Zeit kein Input oder Broadcast Event verarbeitet werden kann. Folgerung Jede Methode im Main Thread soll nur das Notwendigste ausführen. Alle anderen Operation wie Netzwerkzugriff, Datenbankzugriff oder umfangreiche Berechnung sollen in Child Threads oder Services ausgelagert werden. Main Thread nie blockieren, z.b. mit Thread.wait() oder Thread.sleep() 7 Thread Main Thread (= UI Thread) Verteilen der Events an die entsprechende GUI Komponenten Zeichnen des Bildschirms Interaktion mit den GUI Widgets Child Thread Ausführen von langen Operationen wie aufwändige Berechnung, Netzwerkzugriff, Datenbank Manipulation, etc. Kein Blockieren des UI Thread ABER aus dem Child Thread können/dürfen UI Kompententen nicht manipuliert werden, da UI Toolkit nicht thread-safe ist! UI Komponenten nur aus dem UI Thread ansprechen Aus Child Thread z.b. Methode Activity.runOnUIThread(Runnable) nutzen, um z.b. Status Meldungen zu setzen. 8 4

Beispiel: Status Meldungen private String statusmessage;... private Runnable updatestatus = new Runnable() { @Override public void run() { tview.settext(statusmessage); ;... protected void startoperation() { new Thread(new Runnable() { public void run() { try { Thread.sleep(10000); statusmessage = "operation finished"; runonuithread(updatestatus); catch (InterruptedException e) { ).start();... 9 Service Services werden für lang laufende Prozesse eingesetzt. Services können von jeder Activity entkoppelt werden. Beispiele: Musik im Hintergrund abspielen, auch ohne Player Activity Polling des Internets nach RSS/Atom FeedsUpdates Halten einer Online Verbindung in einer Chat Kommunikation, obwohl aktuell ein Telefonanruf beantwortet werden muss. 10 5

Manuelle Services vs. IPC Services Services können manuell, explizit gestartet werden: startservice(intent) Services werden auch gestartet, falls ein IPC Request (Inter Process Communication) anliegt. 11 Lebenszyklus Service explizit startservice(intent) oncreate() onstart() Service läuft im Background stopservice(intent) ondestroy() 12 6

Lebenszyklus Service implizit bindservice(intent, service-connection, flags) oncreate() onbind() Service läuft im Background Client kann mit dem Service interagieren. Es existiert eine Verbindung in Form eines Kommunikationskanals unbindservice(service-connection) onunbind() ondestroy() 13 IPC in Android Jede Android Applikation hat seinen eigenen Prozess. Auch ein Service kann in einem separaten Prozess laufen. Jedoch ist ein Kommunikationsaustausch über Prozessgrenzen oft notwendig. Dies erfordert ein IPC Mechanismus oder RPC Unterstützung. Objekte, die über Prozessgrenzen kommuniziert werden sollen, müssen serialisiert und deserialisiert werden können. Android unterstützt IPC mit einer Interface Definition Language IDL, vergleichbar mit Corba oder COM. In Android heisst dies AIDL. Das AIDL-Tool kann die Kommunikationskomponenten für den Client (-> Proxy) und für den Server (-> Stub) automatisch erstellen. 14 7

Arbeiten mit AIDL Service Interface über.aidl File definieren AIDL kennt eine einfache, java-ähnliche Syntax siehe Android Dev Guide -> Tools -> aidl Proxy und Stub generieren Mit Hilfe des aidl Tools Das Eclipse Plugin hat diesen Vorgang automatisiert Service Interface, d.h. Stub implementieren Klasse Service erweitern Service für Client Zugang Methode onbind() implementieren 15 Beispiel: AIDL File package edu.mad; interface IUptimeService { int getuptimeinseconds(); in File IUptimeService.aidl und Package edu.mad 16 8

Beispiel: Server Stub public class UptimeService extends Service {... private final IUptimeService.Stub mbinder = new IUptimeService.Stub() { public int getuptimeinseconds() throws RemoteException {...; ;... Im Stub werden alle Service Methoden (hier getuptimeinseconds()) implementiert. 17 Beispiel: onbind() public IBinder onbind(intent intent) { if (UptimeService.class.getName().equals (intent.getaction())) { return mbinder; return null; Der Client wird nach dem Methodenaufruf bindservice(new Intent(IUptimeService.class.getName()), svcconn, Context.BIND_AUTO_CREATE); über die Variable svcconn die Bindung (= Proxy) zum Service erhalten. 18 9

Beispiel: Service Connection private ServiceConnection svcconn = new ServiceConnection() { @Override public void onserviceconnected(componentname name, IBinder service) { uptimeservice = IUptimeService.Stub.asInterface(service); @Override public void onservicedisconnected(componentname name) { uptimeservice = null; ; Die ServiceConnection Instanz wird bei bindservice() als Argument mitgegeben. Das Android System wird bei der Bindung die Callback Methode onserviceconnected() aufrufen. Hier wird das Service Interface im Client bekanntgemacht. 19 Aufgabe siehe Arbeitsblatt "Services" auf der Modul Website Ziel: Einsatz eines einfachen Services, der die Uptime dieses Services in Sekunden zählt. Ein Client nutzt die Service API, um die Uptime dem User anzuzeigen. 20 10