Tinder 使用 Android 架构组件解决约会应用痛点

Tinder 是全球最受欢迎的结识新朋友的应用。它以改变人们见面和约会的模式而闻名,使用户能够向右滑动以连接并与他人聊天。Tinder 每天产生超过 2600 万次匹配,自 2012 年推出以来已产生超过 200 亿次匹配。

该公司需要根据用户需求快速扩展其应用,但其数据库实现遗留自早期,这使得扩展变得越来越复杂。他们还拥有一个视图密集型架构来减少生命周期复杂性,但需要了解哪些生命周期事件特定于活动。他们缺乏一个一致的框架来处理诸如将Cursor 对象编组到域对象、执行数据库迁移或一致地执行查询等任务。

他们做了什么

Image of a
       profile

图 1:Tinder 上一位摄影师的照片

Tinder转向使用Android架构组件来解决代码升级问题。他们使用LifecycleView观察其宿主Activity的生命周期,并使用LifecycleObserver来促进去中心化的插件架构,并防止PresenterActivityView对象出现膨胀。 Room持久化库提供了一种一站式方法来定义、管理和查询其本地数据库。

Tinder开发团队仅用两周时间就实现了LifecycleObserver和插件架构,而无缝地为其内部广告SDK实现Room也只花了两天时间。

“我们不再需要花费大量时间在插件或视图中管理Activity生命周期,”Tinder Android负责人Andy Lawton说道。“Room的设计经过精心考虑,使我们的持久化层易于实现。使用Room来开发内部广告SDK可能节省了一周的前期开发时间。”

结果

Tinder对其广告SDK的结果非常满意,因此他们正在将其整个数据库层迁移到Room。测试非常容易,Room防止忘记取消注册某些内容的功能减少了内存泄漏。Android架构组件还有助于产生更小的内存占用。

“Android架构组件为解决开发人员在各种规模下遇到的许多痛点提供了一种方案,”Lawton说道。“通过使用生命周期感知组件,Tinder成功地提高了开发人员的生产力、可测试性和模块化,同时也有利于视图优先的架构。Room消除了管理SQLite的其他解决方案的需求,并将数据库管理和查询变成了一项配置练习。”

指标

500+行代码从MainActivity中移除,通过LifecycleObserver/插件架构

开始使用

Android架构组件作为Android Jetpack的一部分向所有开发人员开放。 开始使用Android架构组件