Tinder löst Probleme von Dating-Apps mit Android Architecture Components

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

Bild eines Profils

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