Tinder rozwiązuje problemy z aplikacjami randkowymi za pomocą komponentów architektury Androida

Tinder to najpopularniejsza na świecie aplikacja do poznawania nowych osób. Aplikacja ta zmieniła sposób, w jaki ludzie poznają się i umawiają na randki. Umożliwia użytkownikom przesuwanie w prawo, aby nawiązywać kontakty i rozmawiać z innymi. Tinder kojarzy ponad 26 milionów par dziennie, a od momentu uruchomienia w 2012 roku doprowadził do ponad 20 miliardów dopasowań.

Firma musiała szybko skalować aplikację w zależności od potrzeb użytkowników, ale jej implementacja bazy danych pochodziła z początków działalności, co utrudniało jej rozbudowę. Mieli też architekturę opartą na widokach, aby zmniejszyć złożoność cyklu życia, ale musieli wiedzieć, które zdarzenia cyklu życia są specyficzne dla działania. Brakowało im spójnych ram do obsługi zadań takich jak przekształcanie obiektów Cursor w obiekty domeny, przeprowadzanie migracji baz danych czy spójne wykonywanie zapytań.

Rozwiązanie

Obraz profilu

Ilustracja 1. Zdjęcie fotografa w Tinderze

Aby ulepszyć kod, zespół Tindera skorzystał z komponentów architektury Androida. Użyli Lifecycle, aby View mogła obserwować cykl życia aktywności hosta, oraz LifecycleObserver, aby ułatwić zdecentralizowaną architekturę wtyczek i zapobiec nadmiernemu rozrostowi obiektów Presenter, ActivityView. Biblioteka trwałości danych Room zapewniała gotową metodę definiowania lokalnej bazy danych, zarządzania nią i wysyłania do niej zapytań.

Zespół programistów Tindera zdołał wdrożyć architekturę wtyczek LifecycleObserver i  w ciągu zaledwie 2 tygodni, a bezproblemowe wdrożenie biblioteki Room w wewnętrznym pakiecie SDK do reklam zajęło tylko 2 dni.

„Nie musieliśmy już poświęcać dużo czasu na zarządzanie cyklem życia aktywności w ramach wtyczek lub widoków” – mówi Andy Lawton, szef zespołu Androida w Tinderze. „Projekt biblioteki Room jest dobrze przemyślany i ułatwia implementację warstwy trwałości. Korzystanie z biblioteki Room w wewnętrznym pakiecie SDK do reklam prawdopodobnie pozwoliło zaoszczędzić tydzień czasu na wstępne prace programistyczne”.

Wyniki

Firma Tinder była tak zadowolona z wyników uzyskanych dzięki pakietowi SDK do reklam, że przenosi całą warstwę bazy danych do Room. Testowanie było proste, a ochrona Room przed zapomnieniem o wyrejestrowaniu czegoś zmniejszyła wycieki pamięci. Komponenty architektury Androida pomagają też zmniejszać zużycie pamięci.

„Komponenty architektury Androida to recepta na rozwiązanie wielu problemów, z którymi deweloperzy borykają się na różnych etapach rozwoju aplikacji” – mówi Lawton. „Dzięki komponentom uwzględniającym cykl życia aplikacji Tinderowi udało się zwiększyć produktywność programistów, łatwość testowania i modułowość, a także stworzyć architekturę opartą na widokach. Room eliminuje potrzebę stosowania innych rozwiązań do zarządzania bazą danych SQLite, a zarządzanie bazą danych i wysyłanie do niej zapytań zamienia w konfigurację”.

Dane

Usunięto ponad 500 linii kodu z MainActivity za pomocą LifecycleObserver / architektury wtyczek

Rozpocznij

Składniki architektury Androida są dostępne dla wszystkich deweloperów w ramach Androida Jetpack. Pierwsze kroki z komponentami architektury Androida