يعمل Tinder على حل المشاكل المتعلقة بالمواعدة في تطبيقات Android باستخدام مكونات Android الهندسية
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
Tinder هو التطبيق الأكثر شهرة في العالم
للقاء أشخاص جدد. تشتهر هذه اللعبة بتغييرات طريقة لقاء الأشخاص وتعارفهم، وهي تمكّن
المستخدمين من التمرير سريعًا لليسار للتواصل والدردشة مع الآخرين. يُنشئ Tinder أكثر من 26 مليون تطابق
يوميًا، وقد تم إجراء أكثر من 20 مليار مطابقة منذ إطلاقها في
2012.
كانت الشركة بحاجة إلى توسيع نطاق التطبيق
بسرعة بناءً على طلب المستخدمين، لكن تم ترك عملية تنفيذ قاعدة بياناتها منذ بداياتها، ما جعل التوسّع أكثر تعقيدًا.
كانت لديهم أيضًا بنية جذابة للعرض لتقليل تعقيدات دورة الحياة، لكنهم
بحاجة إلى معرفة أحداث دورة الحياة التي كانت خاصة بأحد الأنشطة. كانت هذه الأدوات تفتقر إلى إطار عمل متّسق للتعامل مع المهام، مثل تنظيم عناصر Cursor في كائنات النطاق، أو إجراء عمليات نقل بيانات قاعدة البيانات، أو إجراء طلبات البحث بشكل منتظم.
تمكّن فريق تطوير Tinder من تنفيذ بنية
LifecycleObserver
والمكوّنات الإضافية في أسبوعين فقط، بينما استغرق تنفيذ الغرفة
لحزمة SDK الداخلية للإعلانات بسلاسة يومَين فقط.
يقول "آندي لوتون"، رئيس قسم Android في Tinder: "لم نعد مضطرين إلى استثمار وقت كبير في إدارة مراحل النشاط ضمن المكوّنات الإضافية أو المشاهدات".
"تصميم الغرفة مدروس جيدًا ويجعل طبقة المثابرة سهلة التنفيذ. من المحتمل أن يكون استخدام الغرفة لحزمة تطوير البرامج (SDK) الداخلية في "إعلانات Google" قد وفّر أسبوعًا من الوقت
في مرحلة التطوير مقدمًا".
النتائج
أسعدت منصة Tinder بالنتائج التي توصّلت إليها بشأن حزمة تطوير البرامج (SDK) لعرض الإعلانات، ما دفعها إلى نقل طبقة قاعدة البيانات بأكملها إلى Room. كان إجراء الاختبار سهلاً، وتم توفير حماية للغرفة من نسيان إلغاء تسجيل أي شيء به تسرب منخفض في الذاكرة.
كما تساعد مكونات Android الهندسية في إنتاج مساحة
أصغر للذاكرة.
يقول لوتون: "لقد وفرت مكونات Android الهندسية وصفة طبية لحل العديد من المشكلات التي يواجهها المطورون على جميع المستويات".
"من خلال استخدام المكوّنات التي تراعي مراحل نشاط المستخدمين، تمكّن فريق Tinder من تحسين إنتاجية المطوّرين وإمكانية اختبارهم وإتاحة وحداتهم النمطية، مع الحفاظ على البنية الأساسية التي تعطي الأولوية للعرض. يغنيك Room عن الحاجة إلى حلول أخرى لإدارة SQLite، ويحول إدارة قاعدة البيانات والاستعلام إلى تمرين في التهيئة".
المقياس
تمت إزالة أكثر من 500 سطر من الرموز البرمجية من MainActivity عبر
LifecycleObserver /
بنية المكوّن الإضافي
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ 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,["# Tinder solves dating-app pain points with Android Architecture Components\n\n[Tinder](https://tinder.com) is the world's most popular app for\nmeeting new people. Known for changing how people meet and date, it empowers\nusers to swipe right to connect and chat with others. Tinder sparks over 26 million\nmatches a day, with more than 20 billion matches made since their launch in\n2012.\n\nThe company needed to scale up the\n[app](https://play.google.com/store/apps/details?id=com.tinder)\nquickly, based on user demand, but their database implementation was left over\nfrom their early days, making it increasingly more complicated to expand upon.\nThey also had a view-heavy architecture to reduce lifecycle complexities, but\nneeded to know which lifecycle events were specific to an activity. They lacked\na consistent framework for handling tasks such as marshalling\n[`Cursor`](/reference/android/database/Cursor) objects into domain objects, making\ndatabase migrations, or consistently performing queries.\n\nWhat they did\n-------------\n\n**Figure 1:** A photo of a photographer on Tinder\n\nTinder turned to [Android Architecture\nComponents](/topic/libraries/architecture) for solutions for upgrading their\ncode. They used [`Lifecycle`](/reference/androidx/lifecycle/Lifecycle) to\nlet a [`View`](/reference/android/view/View) observe its host activity's\nlifecycle, and they used [`LifecycleObserver`](/reference/androidx/lifecycle/LifecycleObserver)\nto facilitate a decentralized plugin architecture and to prevent bloat in\n[`Presenter`](/reference/androidx/leanback/widget/Presenter),\n[`Activity`](/reference/android/app/Activity), and [`View`](/reference/android/view/View)\nobjects. The [Room persistence library](/topic/libraries/architecture/room)\nprovided a turnkey method for defining, managing, and querying their local\ndatabase.\n\nThe Tinder development team was able to implement the\n[`LifecycleObserver`](/reference/androidx/lifecycle/LifecycleObserver) and\nplugin architecture in only two weeks, while seamlessly implementing Room for\ntheir internal Ads SDK took just two days.\n\u003e \"We no longer had to invest significant time managing the Activity Lifecycle\n\u003e inside of plugins or views,\" says Andy Lawton, Head of Android at Tinder.\n\u003e \"Room's design is well- thought-out and makes our persistence layer easy to\n\u003e implement. Using Room for the internal Ads SDK probably saved a week of time\n\u003e in upfront development.\"\n\nResults\n-------\n\nTinder was so pleased with their results with their Ads SDK that they're\nmigrating their entire database layer to Room. Testing was easy, and Room's\nprotection against forgetting to unregister something reduced memory leaks.\nAndroid Architecture Components is also helping to produce smaller memory\nfootprints.\n\u003e \"Android Architecture Components has provided a prescription for solving many\n\u003e of the pain points that developers face at all different scales,\" Lawton says.\n\u003e \"Through the use of lifecycle-aware components, Tinder has managed to improve\n\u003e developer productivity, testability, and modularity, while being conducive to\n\u003e a view-first architecture. Room eliminates the need for other solutions for\n\u003e managing SQLite, and turns database management and querying into an exercise\n\u003e in configuration.\"\n\nMetric\n------\n\n**500+** lines of code removed from `MainActivity` via\n[`LifecycleObserver`](/reference/androidx/lifecycle/LifecycleObserver) /\nplugin architecture\n\nGet started\n-----------\n\nAndroid Architecture Components is open to all developers as part of Android\nJetpack. [Get started with Android Architecture\nComponents](/topic/libraries/architecture)."]]