Tinder 是一款风靡全球的交友应用。它以改变人们的约会方式而闻名,用户只需向右滑动即可与他人建立联系和聊天。每天有超过 2600 万用户在 Tinder 上配对成为好友,自 2012 年正式推出以来,在 Tinder 上成功配对的用户超过 200 亿。
该公司需要根据用户需求快速扩展应用,但他们的数据库实现从早期开始就成为遗留问题,这使得扩展工作变得越来越复杂。此外,他们还拥有一个包含大量视图的架构来降低生命周期的复杂性,但需要知道哪些生命周期事件是特定于相应 activity 的事件。他们缺少一致的框架来处理任务(例如将 Cursor
编组到网域对象中,执行数据库迁移或以一致方式执行查询)。
策略
Tinder 利用 Android 架构组件来寻求代码升级解决方案。他们使用 Lifecycle
让 View
观察其宿主 activity 的生命周期,并使用 LifecycleObserver
来实现分散式插件架构,并防止 Presenter
、Activity
和 View
对象中出现膨胀。Room 持久性库提供了一种用于定义、管理和查询其本地数据库的统包方法。
Tinder 开发团队仅在两周内就能够实现 LifecycleObserver
和插件架构,而针对内部 Ads SDK 无缝实现 Room 仅用了两天时间。
“我们不再需要投入大量时间在插件或视图内管理 activity 生命周期,”Tinder 的 Android 主管 Andy Lawton 说道, “Room 经过精心设计,让我们的持久性层易于实施。将 Room 用于内部 Ads SDK 后,在前期开发中可能节省了一周的时间。”
结果
Tinder 对其 Ads SDK 的结果非常满意,因此他们决定将整个数据库层迁移到 Room。测试很简单,Room 为防范忘记取消注册提供的保护措施减少了内存泄漏。 此外,Android 架构组件还有助于减少内存占用。
“Android 架构组件提供的解决方法可以解决开发者在各种不同开发规模下面临的诸多难题。”Lawton 说道,“通过使用生命周期感知型组件,Tinder 成功地提高了开发者的工作效率、改进了可测试性和模块化设计,同时有助于实现视图优先的架构。采用 Room 后,便无需使用管理 SQLite 的其他解决方案,只需通过常规的配置即可实现数据库管理和查询。”
指标
通过 LifecycleObserver
/插件架构从 MainActivity
中移除了 500 多行代码
开始使用
Android 架构组件作为 Android Jetpack 的一部分向所有开发者开放。开始使用 Android 架构组件。