Tinder ist die weltweit beliebteste App, um neue Leute kennenzulernen. Die App hat die Art und Weise, wie Menschen sich kennenlernen und daten, revolutioniert. Nutzer können nach rechts wischen, um sich mit anderen zu vernetzen und zu chatten. Auf Tinder werden täglich über 26 Millionen Matches erzielt. Seit der Einführung im Jahr 2012 wurden insgesamt über 20 Milliarden Matches erzielt.
Das Unternehmen musste die App schnell an die Nutzeranforderungen anpassen. Die Datenbankimplementierung stammte jedoch aus der Gründungszeit des Unternehmens und war daher immer schwieriger zu erweitern.
Sie hatten auch eine View-lastige Architektur, um die Komplexität des Lebenszyklus zu verringern, mussten aber wissen, welche Lebenszyklusereignisse für eine Aktivität spezifisch waren. Es fehlte ein einheitliches Framework für die Verarbeitung von Aufgaben wie dem Marshalling von Cursor
-Objekten in Domain-Objekte, der Durchführung von Datenbankmigrationen oder der konsistenten Ausführung von Abfragen.
Vorgehensweise
Abbildung 1:Ein Foto eines Fotografen auf Tinder
Tinder hat sich an die Android-Architekturkomponenten gewandt, um Lösungen für die Aktualisierung des Codes zu finden. Sie verwendeten Lifecycle
, damit ein View
den Lebenszyklus der Hostaktivität beobachten kann, und LifecycleObserver
, um eine dezentrale Plug-in-Architektur zu ermöglichen und eine Aufblähung von Presenter
-, Activity
- und View
-Objekten zu verhindern. Die Room-Persistenzbibliothek bot eine schlüsselfertige Methode zum Definieren, Verwalten und Abfragen der lokalen Datenbank.
Das Entwicklungsteam von Tinder konnte die LifecycleObserver
- und Plugin-Architektur in nur zwei Wochen implementieren. Die nahtlose Implementierung von Room für das interne Ads SDK dauerte nur zwei Tage.
„Wir mussten nicht mehr viel Zeit in die Verwaltung des Aktivitätslebenszyklus in Plug-ins oder Ansichten investieren“, sagt Andy Lawton, Head of Android bei Tinder. „Das Design von Room ist durchdacht und macht die Implementierung unserer Persistenzebene einfach. Die Verwendung von Room für das interne Ads SDK hat uns wahrscheinlich eine Woche Entwicklungszeit gespart.“
Ergebnisse
Tinder war so zufrieden mit den Ergebnissen des Ads SDK, dass das Unternehmen die gesamte Datenbankebene zu Room migriert. Das Testen war einfach und der Schutz von Room vor dem Vergessen der Deregistrierung von etwas hat Speicherlecks reduziert. Android Architecture Components trägt auch dazu bei, den Speicherbedarf zu verringern.
„Die Android-Architekturkomponenten bieten eine Lösung für viele der Probleme, mit denen Entwickler in allen Größenordnungen konfrontiert sind“, sagt Lawton. „Durch die Verwendung von lebenszyklusbewussten Komponenten konnte Tinder die Entwicklerproduktivität, Testbarkeit und Modularität verbessern und gleichzeitig eine View-First-Architektur unterstützen. Mit Room sind keine anderen Lösungen für die Verwaltung von SQLite erforderlich. Die Datenbankverwaltung und das Ausführen von Abfragen werden zu einer Konfigurationsaufgabe.“
Messwert
Über 500 Zeilen Code wurden aus MainActivity
über LifecycleObserver
/ Plugin-Architektur entfernt.
Erste Schritte
Android Architecture Components ist für alle Entwickler als Teil von Android Jetpack verfügbar. Erste Schritte mit Android-Architekturkomponenten