Tinder نقاط دردناک برنامه دوستیابی را با اجزای معماری Android حل می کند
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
Tinder محبوب ترین برنامه جهان برای ملاقات با افراد جدید است. این برنامه که به دلیل تغییر نحوه ملاقات و قرار ملاقات افراد شناخته شده است، به کاربران این امکان را می دهد که برای اتصال و گپ زدن با دیگران، انگشت خود را به سمت راست بکشند. Tinder روزانه بیش از 26 میلیون کبریت را جرقه می زند که از زمان عرضه آن در سال 2012 بیش از 20 میلیارد مسابقه ساخته شده است.
این شرکت باید بر اساس تقاضای کاربر، برنامه را به سرعت افزایش میداد، اما پیادهسازی پایگاه داده آنها از روزهای اولیه باقی مانده بود و گسترش آن را به طور فزایندهای پیچیدهتر میکرد. آنها همچنین دارای یک معماری سنگین برای کاهش پیچیدگی های چرخه حیات بودند، اما باید بدانند کدام رویدادهای چرخه حیات مختص یک فعالیت است. آنها فاقد یک چارچوب ثابت برای رسیدگی به وظایفی مانند قرار دادن اشیاء Cursor در اشیاء دامنه، ایجاد مهاجرت پایگاه داده یا انجام مداوم پرس و جوها بودند.
کاری که آنها انجام دادند
شکل 1: عکس یک عکاس در Tinder
Tinder برای راهحلهایی برای ارتقای کد خود به مؤلفههای معماری اندروید روی آورد. آنها از Lifecycle استفاده کردند تا به View اجازه دهند چرخه حیات فعالیت میزبان خود را مشاهده کند، و از LifecycleObserver برای تسهیل معماری غیرمتمرکز افزونه و جلوگیری از نفخ در اشیاء Presenter ، Activity و View استفاده کردند. کتابخانه تداوم اتاق یک روش کلید در دست برای تعریف، مدیریت و پرس و جو از پایگاه داده محلی خود ارائه می دهد.
تیم توسعه Tinder توانست معماری LifecycleObserver و پلاگین را تنها در دو هفته پیادهسازی کند، در حالی که اجرای یکپارچه Room برای Ads SDK داخلی خود فقط دو روز طول کشید.
اندی لاتون، رئیس اندروید در Tinder میگوید: «دیگر مجبور نیستیم زمان قابل توجهی را برای مدیریت چرخه حیات فعالیت در داخل افزونهها یا نماها صرف کنیم. "طراحی اتاق کاملاً فکر شده است و اجرای لایه پایداری ما را آسان می کند. استفاده از Room برای SDK تبلیغات داخلی احتمالاً یک هفته در زمان توسعه اولیه صرفه جویی می کند."
نتایج
Tinder آنقدر از نتایج خود با Ads SDK خود راضی بود که کل لایه پایگاه داده خود را به Room منتقل می کند. آزمایش آسان بود، و محافظت اتاق در برابر فراموش کردن لغو ثبت چیزی باعث کاهش نشت حافظه شد. اجزای معماری اندروید نیز به تولید ردپای حافظه کوچکتر کمک میکند.
لاتون میگوید: «مجموعههای معماری اندروید نسخهای برای حل بسیاری از دردسرهایی که توسعهدهندگان در مقیاسهای مختلف با آن مواجه هستند، ارائه کرده است. Tinder با استفاده از مؤلفههای مربوط به چرخه حیات، توانسته بهرهوری، آزمایشپذیری و ماژولار بودن توسعهدهنده را بهبود بخشد، در حالی که برای معماری view-first مساعد است. Room نیاز به راهحلهای دیگر برای مدیریت SQLite را از بین میبرد و مدیریت پایگاه داده و جستجو را تغییر میدهد. به یک تمرین در پیکربندی."
متریک
بیش از 500 خط کد از طریق معماری LifecycleObserver / افزونه از MainActivity حذف شد.
شروع کنید
Android Architecture Components به عنوان بخشی از Android Jetpack برای همه توسعه دهندگان باز است. با اجزای معماری Android شروع کنید .
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2018-05-03 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 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)."]]