jambit ToiletPaper 120

Android Architecture Components

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

Wir verwenden Cookies, um unsere Webseite für Sie zu optimieren. Mit dem Besuch unserer Webseite erklären Sie sich damit einverstanden. // Our website is using cookies to improve your experience. By continuing to browse the site, you are agreeing to our use of cookies.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. // For more information, please refer to our privacy policy.