Problem: Eine gute Softwarearchitektur von Beginn an

Wie beim Hausbau ist auch in der Softwareentwicklung eine gute Architektur die Basis für den Erfolg eines Projekts. Da spätere Änderungen meistens aufwendig und teuer sind, sollte man möglichst früh eine gute Grundlage schaffen. Wie das Ganze in einer Android App aussehen kann, möchte ich hier kurz vorstellen.

Lösung: Die Architecture Components im Android Jetpack

Google hat mit der Einführung von Android Jetpack sehr viele Komponenten für die Entwicklung von Apps zusammengefasst. In diesem Paket findet man auch die sogenannten "Architecture Components". Diese nehmen einem nicht nur sehr viel Arbeit bei der Entwicklung ab, sondern werden auch im Rahmen des Guide to app architecture empfohlen. Dabei wird der Einsatz der "Architecture Components", anhand einer auf dem Model-View-ViewModel (MVVM) Pattern basierenden Architektur, demonstriert. Im Folgenden ein kleiner Überblick über die einzelnen Komponenten und deren Nutzen.

  • Activity/Fragment: Activities und Fragments sind nicht Teil der "Architecture Components", sondern sind Grundkomponenten in der Entwicklung von Android Apps.
  • ViewModel: Verwaltet die UI-relevanten Daten. Im Gegensatz zur Activity, lebt das ViewModel unabhängig vom Activity Lifecycle.
  • LiveData: Daten-Container, der observable ist. Dadurch werden die Activity/Fragments automatisch über Datenänderungen informiert, ohne dass sie vom ViewModel explizit aufgerufen werden müssen. Dabei wird aber der Lebenszyklus der Komponente respektiert und somit Memory Leaks vermieden.
  • Repository: Ist zwar keine eigene Android Komponente, wird aber als "best practice" empfohlen, da wir damit das ViewModel von der eigentlichen Datenquelle trennen können. Das Ganze ist vor allem dann hilfreich, wenn wir unsere Daten, wie im rechten Bild dargestellt, aus unterschiedlichen Quellen beziehen und synchronisieren müssen.
  • Room: Ist eine Bibliothek, die den Zugriff auf die SQLite Datenbank kapselt und vereinfacht. Room arbeitet viel mit Annotations (z.B. @Entity, @Dao) und reduziert damit unnötigen Boilerplate Code.
Architecture Components within the Android Jetpack: Overview & Benefits

Weiterführende Aspekte

---

Autor: Stefan Baumgartner / Software Architect / Business Division Banking & Insurance

Grafikquelle: https://developer.android.com/jetpack/docs/guide; Portions of this page are reproduced from work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

Android Architecture Components

SCHREIB UNS

* Pflichtfeld

SCHREIB UNS

* Pflichtfeld

Cookie-Einstellungen

Diese Website verwendet Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und Zugriffe auf die Website zu analysieren. Zudem werden Informationen zu Ihrer Verwendung der Website an Partner für soziale Medien, Werbung und Analysen weitergegeben. Die Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. Dort können Sie nachträglich auch Ihre Cookie-Einstellungen ändern.

contact icon

Kontakt aufnehmen