iHeartRadio 使用 Android 架构组件创建更清晰、更精简的代码库
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
iHeartRadio 是一家总部位于纽约市的公司,该公司在一个应用中提供无限量的音乐和成千上万的电台。该公司的业务包括无线电广播、线上服务、移动、数字和社交媒体、现场音乐会和活动、整合、音乐研究服务和独立媒体代理。
自 2008 年推出以来,该应用的全球下载量已超过了 10 亿次。不过,到 2017 年底,代码库已经在持续老化,而且管理代码和集成新功能也被证明是难以完成的事情。
他们做了什么
iHeartRadio 在开始升级代码时选择了 Android 架构组件。简单易用的 Room 持久性库可以处理异步查询等任务并支持 RxJava(iHeartRadio 在其代码中广泛使用此功能),因而得到了 iHeartRadio 工程师的青睐。
他们还采用了生命周期感知型组件,这些组件可执行相应的操作来响应另一个组件的生命周期状态的变化。iHeartRadio 工程师发现这些组件对于缩小注入 Activity 和 Fragment 的依赖性非常有用。此外,该公司使用 ViewModel 创建了原型,它允许数据在屏幕旋转等配置更改后继续存在。
成果
iHeartRadio 发现可以轻松迁移到架构组件并使用这些库来测试集成的效果。
Room 和其他组件需要使用的样板代码量很少,这意味着应用的代码目前在显著缩短。架构组件还减少了内存泄漏。另一个好处是加入团队的新开发者可以迅速上手,开始编码工作。
总的来说,采用架构组件后,iHeartRadio 得以创建了一个更清晰、更精简的代码库,有助于防止开发者出错。
这对任何应用来说都是一种助益,特别是对于向全球受众群体提供一体化数字音频的应用。
开始使用
Android 架构组件作为 Android Jetpack 的一部分向所有开发者开放。开始使用 Android 架构组件。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2018-05-03。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2018-05-03\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2018-05-03。"]]