© Excellent backgrounds/Shutterstock.com
Teil 1: Dependency Injection, Validierungen, Image Caching und Crash-Reports

Skaten mit dem grünen Roboter


Sie wollen mit Android mal etwas richtig Cooles bauen, sodass Ihre Kollegen und Kids ein anerkennendes „Wow!“ raunen? Und dabei gleichzeitig die Android-Plattform besser kennenlernen und essenzielle Frameworks bzw. Bibliotheken einsetzen? Dann ist die vorliegende Serie ein guter Einstieg, denn genau das wird im Rahmen dieser „eSkate“-Tutorialreihe vermittelt.

Video: Rapid Android Development

Im Rahmen der bereits erschienenen Android-Tutorials wurden stets einzelne Themen (Backend as a Service, Spring for Android etc.) autark behandelt und ein entsprechendes Coding-Beispiel erstellt. Das Problem dieser Beispiele kennt jeder Entwickler: Ein erster Eindruck kann vermittelt werden, die wahren Probleme treten jedoch in der Regel erst außerhalb des geschützten Tutorialbereichs auf. Gleichzeitig haben solche Beispiele stets einen faden Lehrbuchgeschmack. Die Lust zum Nachbauen bzw. Mitmachen steigt schlagartig an, wenn es sich um ein Real-World-Szenario handelt.

Entsprechend soll mit dem vorliegenden Tutorial ein Grundstein für eine Android-App gelegt werden, die dann in weiteren Artikeln erweitert bzw. vertieft wird. Der Fokus liegt dabei nicht auf einem einzigen Framework, sondern es werden unterschiedliche „Android-Helfer“ vorgestellt, die Sie in Ihrer persönlichen Android-Werkzeugkiste sammeln können, um diese dann zu gegebenen Zeitpunkten einsetzen zu können. Das gesamte Projekt steht als öffentliche GitHub-Ressource zur Verfügung, Codeeinsicht und auch Erweiterungen sind jederzeit möglich und willkommen. Das Gesamtresultat des Tutorials wird im Rahmen der diesjährigen W-JAX in München präsentiert [1].

eSkate

Wie bereits erwähnt, soll kein klassisches „Enterprise-Szenario“ die Grundlage der App bilden. Stattdessen wird bewusst zu einem „Hipster Case“ gegriffen – es soll eine Anwendung für das Aufzeichnen elektronischer Fortbewegungsaktivitäten erstellt werden, eine Art Runtastic, bei der nicht Muskelkraft, sondern Volt und Ampere im Vordergrund stehen. Hintergrund des gesamten Projekts: Nicht nur elektrische Fahrräder boomen momentan, auch im Bereich der Skateboards (Abb. 1) erschließt sich ein neues Marktsegment. Skateboards mit Geschwindigkeiten von 35 km/h und Reichweiten zwischen 20 km und 30 km ermöglichen das Pendeln zur Arbeit oder zum Bahnhof und garantieren darüber hinaus schon am frühen Morgen eine ordentliche Portion Spaß.

mueller_florian_1.tif_fmt1.jpgAbb. 1: Elektrisches Skateboard – der Akku ist im Brett integriert

Entsprechend soll eine App erstellt werden, die das Tracken solcher Aktivitäten ermöglicht. Die Anzeige gefahrener Gesamtkilometer, eine Anbindung für eine Akkustandanzeige via Bluetooth etc. sollen mittels Android umgesetzt werden. Dabei steht ab jetzt nicht der eigentliche Use Case, sondern vielmehr die Umsetzung im Vordergrund. Denn die hier genannten Anforderungen sind eine Goldgrube für den Einsatz von Android-Bibliotheken und Frameworks. Im ersten Teil des Tutorials werden nachfolgende „Problemzonen“ behandelt, mit denen jeder Android-Entwickler über kurz oder lang Bekanntschaft machen wird:

  • Wie können feste Bindungen von Android Activities und anderen Klassen verhindert werden?

  • Feldvalidierungen – muss ich das wirklich selbst machen?

  • Wie lassen sich Memory Exceptions beim Umgang mit Bildern vermeiden?

  • Wie können App Crashes außerhalb der localhost-Umgebung sauber und effizient ausgewertet werden?

Das gesamte eSkate-Projekt (Abb. 2) wird mittels An­droid Studio (Version 0.8.9) entwickelt, als primäre Testumgebung wird ein Samsung-Galaxy-Note-3-Telefon eingesetzt – leider ist die Android-Simulatorumgebung nach wie vor extrem zäh und schwergewichtig. Entwicklern mit starkem Koffeinverlangen kommen die langen Launch-Zeiten des Emulators zwar entgegen, allen anderen wird jedoch zur Verwendung eines physischen Devices geraten. Um die App auf verschiedenen Geräten zu testen, wird in einem der nächsten Tutorials ein entsprechendes Testframework vorgestellt.

mueller_florian_2.tif_fmt1.jpgAbb. 2: eSkate in Action

Dependency Injection

Alle Android-Green-Field-Projekte verlaufen nach demselben Pattern: Der Entwickler nimmt sich vor, dieses Mal richtig sauberen Code zu produzieren, mit sauberen Bindings via Intents und Interfaces. Das funktioniert für die ersten zwanzig Klassen, danach wird der Code zunehmend schmutziger: Hier noch schnell eine Referenz auf eine Aktivität, dort ein globales Modell, das via globalem ApplicationContext mitgezogen wird, und schon ist es wieder passiert: Ein spinnennetzartiges Konstrukt ist entstanden. Wird an einem Faden gezogen, hat dies Konsequenzen auf zig andere Teile des Netzes. Testiterationen, die dem Stopfen von Löchern in einem Ruderboot gleichkommen, können ganze Projekte zum Straucheln bringen.

Ganz klar ein überspitzt dargestelltes Szenario, dennoch als Grundtendenz bei etlichen Projekten zu erkennen. Was kann man dagegen tun? Das Zauberwort, das auf der Java-Serverseite seit Jahren schon gar nicht mehr erwähnt wird, da es zum De-facto-Standard geworden ist, heißt Dependency Injection. Spring hat vorgemacht, wie es funktioniert, der Java-Standard hat nachgezogen. Das Resultat sind Anwendungen, die effizient gewartet bzw. erweitert werden können. In Android gehört Dependency Injection leider noch nicht zum De-facto-Standard, sondern fällt in die Kategorie „Schau ich mir irgendwann mal an, wenn ich Zeit habe.“ Genau dieser Zeitpunkt ist jetzt, denn ohne Dependecy Injection sollten Sie zukünftig keine...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang