Tinder — самое популярное в мире приложение для знакомств с новыми людьми. Известный тем, что меняет способы знакомств и свиданий, он позволяет пользователям проводить пальцем вправо, чтобы общаться и общаться с другими. Tinder генерирует более 26 миллионов совпадений в день, причем с момента его запуска в 2012 году было создано более 20 миллиардов совпадений.
Компании нужно было быстро масштабировать приложение в зависимости от спроса пользователей, но реализация базы данных осталась с первых дней существования, что делало расширение более сложным. У них также была архитектура с большим количеством просмотров, позволяющая уменьшить сложность жизненного цикла, но им нужно было знать, какие события жизненного цикла специфичны для определенного действия. У них не было согласованной структуры для выполнения таких задач, как объединение объектов Cursor
в объекты домена, миграция баз данных или последовательное выполнение запросов.
Что они сделали
Tinder обратился к компонентам архитектуры Android за решениями по обновлению своего кода. Они использовали Lifecycle
чтобы позволить View
наблюдать за жизненным циклом активности своего хоста, и они использовали LifecycleObserver
для облегчения децентрализованной архитектуры плагинов и предотвращения раздувания объектов Presenter
, Activity
и View
. Библиотека персистентности Room предоставила готовый метод для определения, управления и запроса локальной базы данных.
Команда разработчиков Tinder смогла реализовать LifecycleObserver
и архитектуру плагинов всего за две недели, а полная реализация Room для их внутреннего Ads SDK заняла всего два дня.
«Нам больше не приходилось тратить много времени на управление жизненным циклом активности внутри плагинов или представлений», — говорит Энди Лоутон, руководитель отдела Android в Tinder. «Дизайн Room хорошо продуман и упрощает реализацию нашего уровня постоянства. Использование Room для внутреннего Ads SDK, вероятно, сэкономило неделю времени на предварительной разработке».
Результаты
Tinder был настолько доволен результатами работы с Ads SDK, что перенес весь уровень базы данных в Room. Тестирование было простым, а защита Room от того, чтобы забыть что-то отменить, уменьшила утечки памяти. Компоненты архитектуры Android также помогают уменьшить потребление памяти.
«Компоненты архитектуры Android предоставили рецепт для решения многих проблем, с которыми разработчики сталкиваются в самых разных масштабах», — говорит Лоутон. «Благодаря использованию компонентов, учитывающих жизненный цикл, Tinder сумел повысить производительность разработчиков, тестируемость и модульность, одновременно создавая архитектуру, ориентированную на просмотр. Room устраняет необходимость в других решениях для управления SQLite и превращает управление базами данных и выполнение запросов в в упражнение по настройке».
Метрика
Более 500 строк кода удалены из MainActivity
с помощью архитектуры LifecycleObserver
/плагинов.
Начать
Компоненты архитектуры Android открыты для всех разработчиков как часть Android Jetpack. Начало работы с компонентами архитектуры Android .