2. Hintergrundverarbeitung in Android: Services und Notifications



Ähnliche Dokumente
Szenario 3: Service mit erweiterter Schnittstelle

2. Hintergrundverarbeitung in Android: Services und Notifications Grundlagen zu Services. Service

3. Stored Procedures und PL/SQL

Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS

Kundenleitfaden zur Sicheren per WebMail

Objektorientierte Programmierung. Kapitel 12: Interfaces

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Software Engineering Klassendiagramme Assoziationen

Xylem WebService Demo Kurzbedienungsanleitung

YouTube: Video-Untertitel übersetzen

Programmieren in Java

Vorkurs C++ Programmierung

ITT WEB-Service DEMO. Kurzbedienungsanleitung

Inhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters

:: Anleitung Hosting Server 1cloud.ch ::

Der große VideoClip- Wettbewerb von Media Markt.

EasyWk DAS Schwimmwettkampfprogramm

5. Abstrakte Klassen

Der schnelle Weg zu Ihrer eigenen App

Archiv - Berechtigungen

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

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

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Gesicherte Prozeduren

Benutzerhandbuch MedHQ-App

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Leichte-Sprache-Bilder

System-Update Addendum

Grundlagen von Python

Einspielanleitung für das Update DdD Cowis backoffice DdD Cowis pos

Tipps und Tricks zu Netop Vision und Vision Pro

BSV Software Support Mobile Portal (SMP) Stand

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Tutorial: Wie kann ich Dokumente verwalten?

Tevalo Handbuch v 1.1 vom

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Objektorientierte Programmierung

Benutzerverwaltung Business- & Company-Paket

GeoPilot (Android) die App

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter "Wartung".

Anleitung über den Umgang mit Schildern

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Eine Anwendung mit InstantRails 1.7

FastViewer Remote Edition 2.X

Registrierung Ihres Fachbesucher Tickets

e-books aus der EBL-Datenbank

Lokale Installation von DotNetNuke 4 ohne IIS

Installationsanleitung UltraVNC v für neue und alte Plattform

Hilfedatei der Oden$-Börse Stand Juni 2014

Professionelle Seminare im Bereich MS-Office

Lizenzen auschecken. Was ist zu tun?

ecaros2 - Accountmanager

Einrichtung von VPN-Verbindungen unter Windows NT

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Mit einem Mausklick sind s aus ACT! heraus in Outlook geschrieben, die dann wiederum auf Wunsch in ACT! dokumentiert werden.

Virtual Private Network

VERWALTUNG. Postfächer, Autoresponder, Weiterleitungen, Aliases. Bachstraße 47, 3580 Mödring

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

ClouDesktop 7.0. Support und Unterstützung. Installation der Clientsoftware und Nutzung über Webinterface

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Bedienungsanleitung für den Online-Shop

Die Post hat eine Umfrage gemacht

Mobile App Development. - Alarm -

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

icloud nicht neu, aber doch irgendwie anders

Um sich zu registrieren, öffnen Sie die Internetseite und wählen Sie dort rechts oben

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Kostenstellen verwalten. Tipps & Tricks

Version NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook

Java: Vererbung. Teil 3: super()

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Zentrale Installation

Oracle APEX Installer

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Das Leitbild vom Verein WIR

Erstellen einer digitalen Signatur für Adobe-Formulare

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

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

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

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Guide DynDNS und Portforwarding

Kapsch Carrier Solutions GmbH Service & Support Helpdesk

Aufruf der Buchungssystems über die Homepage des TC-Bamberg

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Kleines Handbuch zur Fotogalerie der Pixel AG

Beispiel(unten ist der Spielfeldrand):

Installationsanleitung WibuKey Treiber

Benutzerverwaltung mit Zugriffsrechteverwaltung (optional)

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Was meinen die Leute eigentlich mit: Grexit?

Transkript:

2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht: In Mobis 1: Threads; hier genauerer Blick auf Services Verschiedene Nutzungsszenarien für Services Kommunikation mit Services Möglichkeiten für Benachrichtigungen an den Nutzer aus dem Hintergrund Remote-Services Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 53

Service Services sind Teil des Komponentenmodells von Android. Sie kapseln Programmlogik, die unabhängig von einer Benutzerschnittstelle ausgeführt werden kann. Sie haben ihr eigenes Lebenszyklusmodell und werden anders behandelt als Activities. Sie können Schnittstellen für den Zugriff durch andere Komponenten anbieten. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 54

Vorteile von Services automatischer Restart höhere Priorität als nicht sichtbare Activities Priorität kann heraufgesetzt werden auf die sichtbarer Activities Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 55

Arten von Services Local Service Service, der im Prozess der Anwendung läuft, die ihn gestartet hat. Remote Service Ein Service der in einem eigenen Prozess läuft. Vorteil: Stabilität Nachteil: Erhöhte Kommunikationskosten, Interprozesskommunikation (IPC) notwendig, typischerweise in Form von Remote Procedure Calls (RPC) Wir betrachten zunächst nur Local Services. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 56

Deklaration von Services im Manifest (1) Service muss als Komponente im Manifest deklariert werden, auf gleicher Ebene wie Activities. Für Local Services genügt die Angabe des Namens der Klasse, die den Service implementiert. <service android:name=".meintollerservice"/> Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 57

Deklaration von Services im Manifest (2) Für eine Remote Service muss man zusätzlich einen Prozessnamen angeben: <service android:name=".meintollerservice" android:process=":meinserviceprozess"/> Prozessname beginnt mit Großbuchstabe: Nur die startende Anwendung kann der Service verwenden, Service läuft unter der User-ID der startenden Anwendung Prozessname beginnt mit Kleinbuchstabe: Jede Anwendung kann auf Service zugreifen Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 58

Services und Threads Ein Service sorgt nicht automatisch für Parallelität, seine Lebenszyklusmethoden laufen im Main Thread Konsequenz: auch für langlaufende Teile im Service benötigen wir Threads. Service hat höhere Priorität, wird nach Möglichkeit nicht unterbrochen und wenn doch u.u. wieder automatisch gestartet. Threads dagegen hängen am Prozess und sterben mit dem Prozess. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 59

Szenario 1: Services als Dienstleistung ohne Kommunikation Operationen: Starten und Stoppen des Service Der Service arbeitet autonom im Hintergrund. Ansonsten keine Kommunikation mit dem Service notwendig Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 60

Die Klasse Service Zur Implementierung eines Service müssen wir von der Klasse android.app.service ableiten. Die wichtige Methoden in diesem Szenario: public void oncreate () Wird aufgerufen, wenn der Service (nicht das repräsentierende Objekt) erzeugt wird. public int onstartcommand (Intent intent, int flags, int startid) seit Android 2.0: Wird jedesmal aufgerufen, eine andere Komponente den Service starten will. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 61

intent: Der Intent, der den Start auslöste, kann zusätzliche Daten beinhalten flags: Flags, die vom Laufzeitsystem gesetzt werden und genauer über den Start informieren startid: Eine ID, die vom Laufzeitsystem vergeben wird. Der Rückgabewert informiert das Laufzeitsystem über die Betriebsart des Service. public void onstart (Intent intent, int startid) vor Android 2.0 public abstract IBinder onbind (Intent intent) In diesem Szenario ohne Bedeutung, muss als abstrakte Methoden aber implementiert werden. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 62

public void ondestroy () Wird aufgerufen, wenn der Service beendet wird, weil z.b. alle Klienten den Service nicht mehr benötigen stopself() Damit der Service sich selbst anhalten kann. Alle Methoden werden implizit durch die Laufzeitumgebung aufgerufen, kein expliziter Aufruf! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 63

Betriebsart Konstanten für die Rückgabe in onstartcommand(): START STICKY: Für Services, die explizit gestartet und gestoppt werden sollen. Automatischer Restart nach Unterbrechung durch das Laufzeitsystem START NOT STICKY: Für Services, die sich nach ausgeführter Arbeit selbst beenden (stopself()). Kein automatischer Restart durch das Laufzeitsystem START REDELIVER INTENT: Für Services, bei denen garantiert werden soll, dass sie ihre Arbeit beenden können Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 64

Automatischer Restart bei Unterbrechung vor Aufruf von stopself() Flags: START FLAG REDELIVER: Unterbrechung durch das Laufzeitsystem bevor stopself() aufgerufen wurde Intent wird wieder mit übergeben START FLAG RETRY: Unterbrechung durch das Laufzeitsystem bei der Betriebsart START STICKY, Intent wird nicht mit übergeben Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 65

Szenario 1: Lebenszyklus oncreate(): Wird beim Erzeugen des Service aufgerufen und sollte für Initialisierungen verwendet werden. onstartcommand(): Wenn eine Komponente den Service startet, mehrfacher Aufruf möglich ondestroy(): Wird aufgerufen, wenn der Service beendet wird. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 66

Szenario 1: Starten und Stoppen Hierfür stehen Methoden im Context zur Verfügung, Beispiel Activity: public abstract ComponentName startservice (Intent service) vgl. startactivity(), Startet einen Service mit Hilfe eines Intents (explizit oder implizit) Liefert null, wenn der Service nicht gestartet werden konnte. public abstract boolean stopservice (Intent service) Hält den Service an, auch wenn noch andere Komponenten den Service benutzen. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 67

Szenario 1: Beispiel Beispiel 2.1. Schreiben in Log alle 5 Sekunden Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 68

Szenario 2: Service mit Callback an andere Komponente Wenn im Service ein Ereignis eintritt, über das die Klienten informiert werden sollen, kann man einen Broadcast Intent verschicken. Broadcast Intents sind selbstdefinierbar und können mit zusätzlichen Daten versehen werden. Für die Behandlung eines Intents, müssen wir einen Broadcast Receiver implementieren, hier typischerweise dynamisch Wiederholung: dynamischer Broadcast Receiver Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 69

Szenario 2: Anwendungsstruktur In Service-Klasse öffentliche String-Konstante als Intent-Bezeichner In Service-Routine der Service-Klasse wird ein Broadcast-Intent versendet In Klient-Klasse wird ein Broadcast Receiver (als nested class) definiert und es wird eine Instanz dieser Klasse erzeugt. In Klient-Klasse wird der Broadcast Receiver registriert, hierbei Verwendung des öffentlichen Intent-Bezeichners aus der Service-Klasse Starten und stoppen des Services wie bisher üblich Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 70

Reaktion auf eintreffende Broadcast Intents in onreceive() des Broadcast Receivers Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 71

Szenario 2: Beispiel Beispiel 2.2. Schreiben in Log alle 5 Sekunden; zusätzlich wird ein Broadcast Intent mit einem Zählerwert versendet, der in einer View angezeigt wird. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 10/11 72