© Excellent backgrounds/Shutterstock.com
Parallelisierung im Mobile-Bereich

Reactive Android


In der Anfangszeit der Informatik war das Leben des Programmierers bequem: Jede neue Generation der zugrunde liegenden Hardware brachte eine wesentliche Performancesteigerung. Die immer effizienter werdenden Prozessorkerne führten die Routinen immer schneller aus, ohne dass von Seiten des Codierers Hilfe notwendig war. Leider ist die Fertigung von Halbleitern ein von diversen Naturgesetzen eingeschränkter Prozess.

Embedded Android

Mittlerweile sind die Strukturen im Desktopbereich so klein, dass schnellere Taktraten nur noch durch enorme Steigerung des Energieverbrauchs realisierbar sind. Chiphersteller reagieren auf diese geänderte Situation durch das Anbieten von Prozessoren, die immer mehr Kerne auf einmal mitbringen. Die Nutzung der dadurch gebotenen Mehrleistung ist leider alles andere als einfach, da sie auf Seiten der Informatiker ein Umdenken voraussetzt. Sega machte diese Erfahrung mit der Saturn: Die enorm leistungsfähige Konsole wurde nur von wenigen Entwicklern voll ausgelastet.

Reaktivität durch Parallelisierung

Im Mobile-Bereich war die Parallelisierung schon lange vor dem Aufkommen der ersten Mehrkernprozessoren ein brisantes Thema: Anders als am Desktop kommt es beim Handy aufgrund der viel kürzeren Sitzungen auf Reaktivität an. Das ist in mehrerlei Hinsicht kritisch: Erstens sind Handys an sich für schnelle Reaktionen nicht sonderlich geeignet. Das liegt unter anderem an der drahtlosen Funkverbindung, die bei umfangreicheren Netzwerkoperationen zu starken Latenzen führt.

Mobilbetriebssysteme realisieren ihre Benutzerschnittstelle meist in einem einzelnen, als GUI-Thread bezeichneten, Prozess. Er ist unter anderem für die Ausführung des Event Handlings zuständig: Die diversen Ereignisverarbeitungsroutinen laufen allesamt in ihm ab.

Wenn Ihr Programm nun in Reaktion auf einen Knopfdruck eine Netzwerkoperation beginnt, so bleibt im schlimmsten Fall der ganze Handheld stehen. Das ist aus Sicht der User höchst ärgerlich und wird mit schlechten Bewertungen im App Store quittiert.

Flucht aus dem GUI-Thread

Google animiert seine Entwickler durch den ANR-Dialog zum Erstellen von reaktiven Anwendungen. Er erscheint, wenn ein Programm auf einen Eingabebefehl fünf Sekunden lang nicht reagiert. Leider führt nicht jede Blocksituation zu einem ANR. In Listing 1 sehen Sie ein Code-Snippet, das ein Android-Smartphone lahmlegt – ein ANR-Dialog erscheint indes erst dann, wenn Sie auf einen anderen Button klicken.

Listing 1

public void onClick(View arg0...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang