ينشئ تطبيق iHeartRadio قاعدة رموز برمجية أكثر تنقيحًا وأقلّ كثافة باستخدام مكوّنات Android الهندسية.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

توفر خدمة iHeartRadio، ومقرها في مدينة نيويورك، موسيقى بلا حدود وآلاف المحطات الإذاعية، وكل ذلك في تطبيق واحد. وتشمل عمليات الشركة البث الإذاعي، وعبر الإنترنت، وأجهزة الجوّال، والوسائط الرقمية والاجتماعية، والحفلات الموسيقية والأحداث المباشرة، والمشاركات، وخدمات البحث عن الموسيقى، والتمثيل الإعلامي المستقل.
نزّل المستمعون حول العالم التطبيق أكثر من
مليار مرة منذ إطلاقه في عام 2008. ومع ذلك، وبحلول أواخر عام 2017، كانت قاعدة الترميزات قديمة،
وتبيّن أنّ إدارة الرموز البرمجية ودمج الميزات الجديدة كانت صعبة.
الإجراءات التي اتخذتها الشركة
اختارت iHeartRadio
مكونات Android الهندسية
عند بدء ترقية الرموز البرمجية. لقد كانت مكتبة استمرارية Room البسيطة والسهلة التنفيذ
جذابة لمهندسي الشركة بسبب
إمكانياتها في التعامل مع أشياء مثل طلبات البحث غير المتزامنة ودعم RxJava، التي يستخدمها iHeartRadio على نطاق واسع في التعليمات البرمجية الخاصة بها.
واعتمدت الشركة أيضًا المكوّنات الواعية لدورة الحياة،
والتي تنفِّذ إجراءات استجابةً لأي تغيير في حالة دورة حياة مكوّن آخر. وقد وجد مهندسو iHeartRadio
أن هذه المكونات مفيدة للغاية لتقليص التبعيات التي يتم إدخالها في الأنشطة والأجزاء. وبالإضافة إلى ذلك، أنشأت الشركة نماذج أولية باستخدام ViewModel، ما يسمح للبيانات بالبقاء على قيد الحياة في التغييرات التي تطرأ على الإعدادات، مثل تدوير الشاشة.
النتائج
وجدت iHeartRadio أنه من السهل الانتقال إلى
مكونات البنية
واستخدام المكتبات لاختبار مدى نجاح التكامل.
تتطلّب الغرفة والمكوّنات الأخرى استخدام رمز نموذجي صغير جدًا، ما يعني أنّ رمز التطبيق أصبح الآن أقصر بكثير. أدت مكونات البنية
أيضًا إلى الحد من تسرب الذاكرة. كانت الفائدة الإضافية هي أنه يمكن للمطورين الجدد
الذين ينضمون إلى الفريق زيادة نشاطهم بسرعة وبدء الترميز.
بشكل عام، ساعد استخدام مكوّنات البنية في قناة iHeartRadio على إنشاء قاعدة رموز أكثر تنظيمًا وأقل كثافةً تساعد في منع حدوث أخطاء.
وهذا خبر سار لأي تطبيق، خاصةً لتطبيق يقدم
صوت رقمي شاملًا للجمهور في جميع أنحاء العالم.
البدء
ميزة "مكونات بنية Android" متاحة لجميع المطوّرين كجزء من
Android Jetpack. بدء
استخدام المكوّنات الهندسية لنظام التشغيل Android
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2018-05-03 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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)."]]