L is for Life

Android L: Was kann Googles neues Betriebssystem?

Lars Röwekamp, Arne Limburg
© shutterstock.com/koya979

Sonst eher von dem Mitbewerber aus dem Nachbarörtchen Cupertino gewohnt, schaffte es Google auf der diesjährigen Google I/O, mit einer echten Überraschung aufzuwarten. Das Betriebssystem Android hat – anders als von den meisten erwartet – mit „Android L“ einen gewaltigen Sprung in Richtung Zukunft gemacht. Ein komplett überarbeitetes User Interface namens „Material Design“ und eine (fast) neue Runtime sind nur zwei der grundlegenden Neuerungen. 

Natürlich war damit zu rechnen, dass Google auch in diesem Jahr seine hauseigene Konferenz dazu nutzen würde, die eine oder andere Neuerung im Android-Betriebssystem vorzustellen. Und natürlich haben alle gehofft, dass nach den eher schwachen Ankündigungen des letzten Jahres endlich, endlich die Ankündigung von Android 5 erfolgt. Wirklich abgezeichnet hatte sich dies im Vorfeld allerdings nicht. Umso überraschender war also die Vorstellung von Android L, welches konsequent Googles neues Motto „Android will follow you everywhere“ verfolgt.

Was von dem einen oder anderen sicherlich auch als Drohung aufgefasst werden kann, zeigt deutlich die Zukunftsvision von Google: Android auf allen erdenklichen Devices – von der Uhr über den TV bis hin zum Car Entertainment – und das Ganze optimal miteinander vernetzt. Die Grundlage hierfür soll die neue Android-Version L im Zusammenspiel mit Android Wear bringen.

Material Design

Das neue Material Design ist sicherlich die aufwändigste UI-Überarbeitung in Android seit der Version 4.0, a. k. a. „Ice Cream Sandwich“, im Jahr 2011. Ziel des neuen Designs ist es, das bereits in 4.0 eingeführte Paradigma zur Unterstützung verschiedenster Plattformen – damals Smartphones und Tablets – auch auf neue Bereiche wie TV oder Car Entertainment auszuweiten.

Mithilfe des zugehörigen Material Theme lassen sich eigene Farbpaletten für UI Controls hinterlegen und so die Apps im Look and Feel optimal an das Unternehmens-CI anpassen. Zusätzliche Touch-Feedback-Animationen, zum Beispiel bei Auswahl eines Listenelements, ermöglichen – bewusst und vorsichtig verwendet – eine deutlich verbesserte User Experience. Anders als in früheren Versionen gibt Google den Nutzern auch gleich eine „Gebrauchsanweisung“ für die optimale Verwendung der neuen UI Features an die Hand. Scheinbar hat man aus den Fehlern der Vergangenheit gelernt und möchte von Anfang an eine falsche Auslegung der eigenen Visionen vermeiden. Es ist natürlich zu hoffen, dass Google sich in den eigenen Apps ebenfalls an diese Guidelines hält.

Neben dem neuen Material Design wartet Android L auch mit zwei neuen UI Widgets – RecylerView und CardView – auf, die dabei helfen sollen, komplexe Listen oder Cards in der eigenen App besser kontrollieren zu können. Während mithilfe der RecyclerView, die man sich als eine Art „pimped-up“ ListView vorstellen kann, eine große Anzahl von Elementen speichereffizient verwaltet werden können – Animationen inklusive – verhilft die neue CardView zur identischen Darstellung von Informationen auf unterschiedlichsten Device-Typen. Eine CardView, die übrigens von FrameLayout ableitet, muss man sich dabei als eine Karte mit optional abgerundeten Ecken und Schatten vorstellen.

Ebenfalls zum Material Design von Android L gehören Animationen, die dem Nutzer direktes Feedback auf die von ihm durchgeführten Aktionen geben sollen. Neben einigen vorgefertigten Animationen für Buttons und Transitionen für Activity-Übergänge können mithilfe eines speziellen API auch eigene Animationen erstellt werden:

  • Touch Feedback: Animation bzw. Transition, die beim Anklicken eines Buttons ausgeführt werden soll, um die Aktion visuell hervorzuheben.
  • Reveal Effect: Animation zum Ein-/Ausblenden einer View, z. B. via „Irisblende“.
  • Activity Transitions: Animationen (explode, slide, fade) für den Eintritt in bzw. den Austritt aus einer Activity. Zusätzlich kann definiert werden, wie gemeinsame Elemente zweier Activities im Übergang animiert werden sollen. 
  • View State Changes: Animationen, die automatisch bei Zustands-Änderungen (pressed, focused, enabled, …) von UI-Elementen ausgeführt werden. 

Notifications

Auch im Bereich der Notifications hat sich – wieder einmal – etwas getan. Zukünftig können diese auch auf dem Lockscreen angezeigt werden. Dabei kann der User via Settings selbst bestimmen, ob auch Nachrichten mit sensitiven Inhalten angezeigt werden sollen oder nicht. Mittels Visibility (private, public oder secret) kann die Anzeige der Notification auch aus der App heraus gesteuert werden. So ist es zum Beispiel möglich, auf dem Lockscreen lediglich anzuzeigen, dass man drei neue Nachrichten eines bestimmten Typs bekommen hat. Die Nachrichten selbst können aber erst außerhalb des Lockscreens geöffnet werden.

Um der Flut der Notifications besser Herr zu werden, lassen sich die Nachrichten, unter Verwendung des Notification.Builder, durch zusätzliche Metadaten erweitern, um so vom System sinnvoll gruppiert und angezeigt werden zu können:

  • Category: Mittels Kategorie, z. B. Alarm oder Instant Message, kann dem System mitgeteilt werden, wie es sich im „Do not disturb“-Modus verhalten soll.
  • Priority: Nachrichten mit PRIORIYT_MAX oder PRIORITY_HIGH werden in einer Art Confirmation-Toast (Heads-up Notification a.k.a. HUN) dargestellt. Erfolgt vom Anwender keine Aktion, tritt die Nachricht nach einer gewissen Zeit wieder in den Hintergrund. Beispiel für eine HUN sind eingehende SMS oder eine Alarm, während das Gerät gerade in Benutzung ist.
  • Person: Nachrichten können Personen hinzugefügt werden. Die App kann so Nachrichten bestimmter Personen bevorzugt anzeigen oder Nachrichten verschiedenen Typs einer Person gruppieren.

Als weiteres Goodie werden Notifications innerhalb der verschiedenen Cloud-Devices eines Nutzers synchronisiert. Bestätigt man also eine Notification auf seinem Tablet, ist sie auch automatisch auf dem Phone verschwunden. Und auch die Android Wearables wurden bei den Erweiterungen der Notifications nicht vergessen. Zum einen kann die Sprachsteuerung auf Android-Wear-Devices genutzt werden, um auf Notifications bzw. die in ihnen angebotenen Aktionen zu reagieren. Zum anderen können eigene Apps gezielt Notifications verarbeiten und so zusätzliche Funktionalität auf dem Android Wear Devices anbieten. 

Android Runtime

Die Dalvik VM ist wahrscheinlich einer der ältesten Bausteine des Android-Ökosystems. Ursprünglich unter der Prämisse „Platz sparen“ eingeführt, haben sich heute die Anforderungen an eine moderne Android-Runtime deutlich geändert. Genau aus diesem Grund wurde bereits in Android 4.4 eine neue Runtime – ART – als „Experimental“ eingeführt. Default war allerdings weiterhin die altbewährte Dalvik-Runtime. Über diesen kleinen Umweg wollte Google ausreichend Erfahrung bei den Entwicklern mit der neuen Runtime sammeln, bevor es zum offiziellen Austausch kommt. Dies wird nun in Android L geschehen.

Die neue Runtime nutzt im Gegensatz zu Dalvik einen Ahead-of-Time-(AOT)-Compiler, was zwar normalerweise eine deutlich verbesserte Startup-Zeit, aber im Gegenzug dazu einen Laufzeitnachteil mit sich bringt, da der Code bereits kompiliert vorliegt und so – anders als bei Just-in-Time-Compilern – nicht auf die Besonderheiten des Devices eingegangen werden kann. An dieser Stelle verwendet Google bei seiner neuen Runtime einen kleinen, aber feinen Trick, indem die Anwendung erst bei der Installation auf dem Device kompiliert wird und so der AOT-Compiler die selben Informationen über das Device zur Optimierung verwenden kann wie der Dalvik JIT-Compiler. 

Und auch das Garbage-Collection-Verhalten wurde verbessert. Zum einen wurde die Anzahl der GC-Pausen halbiert, zum anderen wurde das „Aufräumverhalten“ des GC optimiert. In Summe soll sich daraus eine deutlich bessere UI-Responsivität und somit eine verbesserte User Experience ergeben. Ebenfalls Verbesserungen hat es im Umfeld des Developments und Debuggings gegeben. So werden Fehler- und Crash-Reports, um sinnvolle Context-Informationen angereichert. Eine NullPointerException zeigt z. B. an, was die Anwendung gerade versucht hat, als die Exception aufgetreten ist:  

java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object reference

Die meisten Android-Anwendungen werden auch unter der neuen Runtime ohne Probleme laufen, und das wahrscheinlich schneller als bisher  – laut Google um den Faktor zwei. Probleme sind lediglich zu erwarten, wenn das Java Native Interface genutzt wird, um C/C++ Code laufen zu lassen, oder wenn Tools verwendet werden, die Nicht-Standard-Code erzeugen (z. B. Obfuscator). Eine genaue Beschreibung potentieller Probleme und deren Lösungen findet sich unter [3].

Projekt Volta

Ähnlich wie schon in Android 4.1 „Projekt Butter“ zur Optimierung der Android-Visualisierung verfolgt das Projekt Volta ein konkretes Ziel zur Verbesserung der Usability: die Verlängerung der Akkulaufzeit.

Neben einigen neuen Entwickler-Tools im SDK, die einem statistische Auswertungen zur aktuellen Batterieverwendung oder aber zur Batteriehistorie anzeigen, springt vor allem das JobScheduler-API ins Auge. Mithilfe dieses neuen API können Jobs bewusst so gesteuert werden, dass sie möglichst batterieschonend – z. B. erst dann, wenn das Gerät aufgeladen wird – ablaufen. Das ist immer dann sinnvolle, wenn 

  • die App Tasks ausführen soll, die keine User-Interaktion benötigen
  • die App Tasks ausführen soll, die Netzwerk (W-LAN) benötigen
  • die App mehrere Tasks am Stück – als Batch – ausführen soll

Um zu verhindern, dass ein Job am Ende niemals ausgeführt wird, können zusätzliche Bedingungen, wie z. B. eine Deadline oder ein Delay, angegeben werden. Laut Google ist die Verbesserung der Batterielaufzeit ein „Major-Issue“ für Android L und wurde daher mit entsprechender Priorität angegangen.

Android L: L is for Life

Mit seiner Formulierung „Desinged for form factors beyond mobile“ drückt Sundar Pichai, Senior Vice President bei Google, klar aus, wohin die Reise für Android gehen soll. So kann man sicher sein, dass nach Smartphone, Tablet, TV und Wearable noch einige interessante Anwendungsgebiete für Android folgen werden. Noch ist nicht klar, wofür das „L“ der aktuellen Version stehen soll. „Life“ wäre sicherlich nicht die verkehrteste Wahl, auch wenn dieses nicht immer so süß ist, wie die bisherigen Android-Namensgeber.

Wer Android L schon einmal ausprobieren möchte kann dies sowohl mit Eclipse ADT als auch mit Android Studio tun. Und auch Images für das Nexus 5 und Nexus 7 stehen bereits bereit – Nutzung natürlich auf eigene Gefahr. 

Aufmacherbild: „letter L alphabet cubes font“ von shutterstock.com / Urheberrecht: koya979 

Geschrieben von
Lars Röwekamp
Lars Röwekamp
Lars Röwekamp ist Gründer des IT-Beratungs- und Entwicklungsunternehmens open knowledge GmbH, beschäftigt sich im Rahmen seiner Tätigkeit als „CIO New Technologies“ mit der eingehenden Analyse und Bewertung neuer Software- und Technologietrends. Ein besonderer Schwerpunkt seiner Arbeit liegt derzeit in den Bereichen Enterprise und Mobile Computing, wobei neben Design- und Architekturfragen insbesondere die Real-Life-Aspekte im Fokus seiner Betrachtung stehen. Lars Röwekamp, Autor mehrerer Fachartikel und -bücher, beschäftigt sich seit der Geburtsstunde von Java mit dieser Programmiersprache, wobei er einen Großteil seiner praktischen Erfahrungen im Rahmen großer internationaler Projekte sammeln konnte.
Arne Limburg
Arne Limburg
Arne Limburg ist Softwarearchitekt bei der open knowledge GmbH in Oldenburg. Er verfügt über langjährige Erfahrung als Entwickler, Architekt und Consultant im Java-Umfeld und ist auch seit der ersten Stunde im Android-Umfeld aktiv.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: