Tinder 是全球最受欢迎的约会应用。它以改变人们见面和约会的方式而闻名,让用户能够通过右滑与其他用户建立联系并聊天。自 2012 年推出以来,Tinder 每天促成超过 2600 万次配对,总配对数量已超过 200 亿次。
该公司需要根据用户需求快速扩展应用,但其数据库实现是从早期遗留下来的,这使得扩展变得越来越复杂。他们还有一种以视图为主的架构,以降低生命周期复杂性,但需要了解哪些生命周期事件是特定于 Activity 的。他们缺乏一个一致的框架来处理诸如将 Cursor
对象编组为域对象、进行数据库迁移或一致地执行查询等任务。
他们做了什么
图 1:Tinder 上一名摄影师的照片
Tinder 求助于 Android Architecture Components 来升级其代码。他们使用 Lifecycle
让 View
观察其宿主 Activity 的生命周期,并使用 LifecycleObserver
促进去中心化的插件架构,并防止 Presenter
、Activity
> 和 View
> 对象膨胀。 Room 持久性库提供了一种定义、管理和查询本地数据库的交钥匙方法。
Tinder 开发团队仅用了两周时间就实现了 LifecycleObserver
和插件架构,而为他们的内部 Ads SDK 无缝实现 Room 则只用了两天。
Tinder Android 负责人 Andy Lawton 表示:“我们不再需要投入大量时间来管理插件或视图内的 Activity 生命周期。Room 的设计经过深思熟虑,使我们的持久层易于实现。为内部 Ads SDK 使用 Room 可能节省了提前开发一周的时间。”
成果
Tinder 对其 Ads SDK 的成果非常满意,因此他们正在将整个数据库层迁移到 Room。测试很容易,并且 Room 针对忘记注销而提供的保护减少了内存泄漏。Android Architecture Components 还有助于减少内存占用。
Lawton 表示:“Android Architecture Components 提供了一个方案,可以解决开发者在各种不同规模下所面临的许多痛点。通过使用生命周期感知组件,Tinder 设法提高了开发者的生产力、可测试性和模块化,同时也有利于视图优先的架构。Room 消除了对管理 SQLite 的其他解决方案的需求,并将数据库管理和查询转变为配置练习。”
指标
通过 LifecycleObserver
/ 插件架构,从 MainActivity
中移除了 500 多行代码
开始使用
Android Architecture Components 作为 Android Jetpack 的一部分,向所有开发者开放。开始使用 Android Architecture Components。