Android Bound Services: Fähigkeiten an andere Apps verleihen

Mit einem Bound Service programmiert man Funktionen von Apps so, dass andere Apps diese nutzen können. So umgeht man Androids App-Abschotterei und spart Code.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Fähigkeiten an andere Apps verleihen mit Androids Bound Services

(Bild: Albert Hulm)

Lesezeit: 7 Min.
Inhaltsverzeichnis

Kurz bevor ich den Job bei der c’t antrat, habe ich mir eine privat gehostete Cloud namens "Pinyto" überlegt, die ihre Datenbank mit RSA-Schlüsseln sauber vor unbefugten Zugriffen schützt. Ich schreibe immer mal wieder am Wochenende ein bisschen weiter an Pinyto. Beim Code für RSA & Co. kommen auch in der nicht so geschwätzigen Java-Alternative Kotlin einige Zeilen zusammen. Da verschiedene Android-Apps auf die Datenbank zugreifen sollten, wollte ich den Code nicht in jeder App duplizieren. Stattdessen sollte eine Connect-App (Download von GitHub) die Authentifizierung übernehmen und alle anderen Apps lesen und schreiben die Datenbank über diesen Mittelsmann.

Eine Aufgabe wie die Kommunikation mit einem Datenbankserver braucht kein grafisches Interface und findet auch unabhängig davon statt, welche Activity Android gerade anzeigt. Für solche Aufgaben bringt Android die Service-Klasse mit. Ähnlich wie Activities hat sie einen Lebenszyklus mit onCreate() und onDestroy(), nur eben unabhängig vom Geschehen auf dem Display. Viele Services dienen nur der eigenen App als Hintergrunddienste. Apps starten sie mit startService(). Ihr Vorteil: Sie laufen weiter, wenn die Activity neu gestartet wird, beispielsweise weil der Anwender sein Gerät dreht. Gestartete Services verwaltet die App selbst und beendet sie, wenn sie sie nicht mehr braucht.

Es gibt aber noch eine weitere Variante: Bound Services. Apps, die für andere Apps Zusatzfunktionen freischalten, wie den Zugriff auf Datenbanken, CalDAV oder ein neues API nutzen sie dafür. Zu einem Bound Service bauen Activities oder Fragments eine Verbindung mit bindService() auf, wenn der Service eine Aufgabe für sie übernehmen soll. Zu einem Bound Service können sich dabei mehrere Objekte – auch von anderen Apps – verbinden, um eine Aufgabe erledigen zu lassen. Standardmäßig konfiguriert Android einen Bound Service so, dass er vom System beendet wird, sobald keine der Verbindungen zu ihm mehr offen ist.

Das war die Leseprobe unseres heise-Plus-Artikels "Android Bound Services: Fähigkeiten an andere Apps verleihen". Mit einem heise-Plus-Abo können sie den ganzen Artikel lesen und anhören.