iHeartRadio는 Android 아키텍처 구성요소를 사용해 깔끔하고 가벼운 코드베이스를 작성했습니다.
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

뉴욕시에 본사를 둔 iHeartRadio는 하나의 앱을 통해
무제한 음악과 수천 개의 라디오 방송을 제공합니다. 이 회사는
라디오 방송, 온라인, 모바일, 디지털 및 소셜 미디어, 라이브 콘서트 및 이벤트,
신디케이션, 음악 검색 서비스, 독립 미디어 대표 서비스 등을 운영하고 있습니다.
2008년 앱 출시 이래로 전 세계 청취자들의 다운로드 횟수는
수십억 건이 넘습니다. 하지만 2017년 말부터 코드베이스가 노후화되면서
코드 관리 및 새로운 기능 통합이 어려워졌습니다.
진행한 작업
코드 업그레이드를 시작한
iHeartRadio는 Android 아키텍처
구성요소를 선택했습니다. 직관적이고 구현하기 쉬운 Room 지속성 라이브러리는
엔지니어들에게 매력적으로 다가왔습니다.
비동기 쿼리와 같은 항목을 처리할 능력을 갖췄으며
iHeartRadio에서 코드 내에 광범위하게 사용하는 RxJava를 지원했기
때문입니다.
iHeartRadio는
다른 구성요소의 수명 주기 상태 변경에 따라
작업을 실행하는 수명 주기 인식 구성요소도
도입했습니다. iHeartRadio 엔지니어들은
활동 및 프래그먼트에 주입된 종속성을 줄이는 데 이러한 구성요소가
매우 유용하다는 사실을 발견했습니다. 또한 화면 회전과 같이 구성을
변경할 때도 데이터를 유지할 수 있는 ViewModel을
사용하여 프로토타입을 생성했습니다.
결과
iHeartRadio는 아키텍처 구성요소로 이전하고
라이브러리를 사용해 통합이 얼마나 잘 작동하는지 간편하게
테스트할 수 있음을 확인했습니다.
Room 및 다른 구성요소는 상용구 코드를
거의 사용하지 않아도 되므로 앱 코드가 이제 현저하게
짧아졌습니다. 아키텍처 구성요소를 사용한 결과
메모리 누수도 줄어들었습니다. 또 다른 이점은 팀에 새롭게 합류한
개발자들이 빠르게 적응하여 바로 코드를 작성할 수 있다는 것입니다.
전반적으로 아키텍처 구성요소를 도입함으로써
iHeartRadio는 깔끔하고 가벼운 코드베이스를 생성하고 오류를 예방할 수 있었습니다.
이는 모든 앱, 특히 전 세계 사용자에게
올인원 디지털 오디오를 제공하는 iHeartRadio에게는 반가운 소식입니다.
시작하기
Android 아키텍처 구성요소는 Android Jetpack의
일부이며 모든 개발자에게 공개되어 있습니다. Android
아키텍처 구성요소를 사용해 보세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2018-05-03(UTC)
[[["이해하기 쉬움","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"]],["최종 업데이트: 2018-05-03(UTC)"],[],[],null,["# iHeartRadio creates a cleaner, leaner code base with Android Architecture Components\n\nNew York City-based [iHeartRadio](https://www.iheart.com/) provides\nunlimited music and thousands of radio stations, all in one app. The company's\noperations include radio broadcasting, online, mobile, digital and social media,\nlive concerts and events, syndication, music-research services, and\nindependent media representation.\n\nListeners around the world have downloaded the app over a billion times\nsince it launched in 2008. By late 2017, however, the codebase was aging,\nand managing the code and integrating new features proved to be difficult.\n\nWhat they did\n-------------\n\niHeartRadio chose\n[Android Architecture Components](/topic/libraries/architecture) as they\nbegan upgrading their code. The straightforward, easy-to-implement\n[Room](/topic/libraries/architecture/room) persistency library was\nattractive to their engineers for its\ncapabilities for handling such things as asynchronous queries and support for\nRxJava, which iHeartRadio uses extensively in their code.\n\nThey also adopted\n[lifecycle-aware components](/topic/libraries/architecture/lifecycle),\nwhich perform actions in response to a change in the\nlifecycle status of another component. The iHeartRadio\nengineers found these components very useful for shrinking dependencies\ninjected into activities and fragments. In addition, the company created\nprototypes using [ViewModel](/topic/libraries/architecture/viewmodel),\nwhich allows data to survive configuration changes, such as screen rotations.\n\nResults\n-------\n\niHeartRadio found it easy to migrate over to\n[Architecture Components](/jetpack/arch)\nand to use the libraries to test how well integration was working.\n[Room](/topic/libraries/architecture/room) and other components require\nthe use of very little boilerplate code, meaning that the app's code is\nnow significantly shorter. [Architecture Components](/jetpack/arch)\nalso resulted in fewer memory leaks. An additional benefit was that new\ndevelopers joining the team could quickly get ramped up and start coding.\n\nOverall, adopting [Architecture Components](/jetpack/arch) has helped\niHeartRadio to create a cleaner, leaner code base that helps them to prevent errors.\nThat's good news for any app, especially for one offering\nall-in-one digital audio to a worldwide audience.\n\nGet started\n-----------\n\nAndroid Architecture Components is open to all developers as part of\n[Android Jetpack](/jetpack). [Get\nstarted with Android Architecture Components](/jetpack/arch)."]]