Tinder risolve i problemi delle app di incontri con i componenti dell'architettura Android
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Tinder è l'app più famosa al mondo per
incontrare nuove persone. Noto per aver cambiato il modo in cui le persone si incontrano e si incontrano, consente agli utenti di scorrere verso destra per connettersi e chattare con gli altri. Tinder genera oltre 26 milioni di corrispondenze al giorno, con oltre 20 miliardi di corrispondenze create dal loro lancio nel 2012.
L'azienda aveva bisogno di fare rapidamente lo scale up dell'app, in base alla domanda degli utenti, ma l'implementazione del database era rimasta sin dall'inizio, rendendo sempre più difficile l'espansione.
Inoltre, disponeva di un'architettura ricca di visualizzazioni per ridurre le complessità del ciclo di vita, ma aveva bisogno di sapere quali eventi del ciclo di vita erano specifici di un'attività. Mancavano
di un framework coerente per la gestione di attività come il marshalling di oggetti
Cursor negli oggetti di dominio, l'esecuzione
di migrazioni di database o l'esecuzione costante di query.
Cosa hanno fatto
Figura 1: la foto di un fotografo su Tinder
Tinder ha adottato i componenti dell'architettura Android per trovare soluzioni per l'upgrade del codice. Ha utilizzato Lifecycle per
consentire a View di osservare il ciclo di vita dell'attività
host e ha utilizzato LifecycleObserver
per facilitare un'architettura plug-in decentralizzata e per evitare sovrappeso negli oggetti
Presenter,
Activity e View. La libreria di persistenza delle stanze
ha fornito un metodo pronto all'uso per la definizione, la gestione e l'esecuzione di query sul
database locale.
Il team di sviluppo di Tinder è riuscito a implementare l'architettura LifecycleObserver e i plug-in in sole due settimane, mentre l'implementazione senza problemi di Room per il suo SDK per gli annunci interno ha richiesto solo due giorni.
"Non dovevamo più dedicare molto tempo alla gestione del ciclo di vita delle attività
all'interno di plug-in o visualizzazioni", afferma Andy Lawton, Head of Android di Tinder.
"Il design della stanza è ben strutturato e semplifica l'implementazione del livello di persistenza. L'utilizzo di Room per l'SDK Google Ads interno ha probabilmente consentito di risparmiare una settimana di tempo
per lo sviluppo iniziale."
Risultati
Tinder è stata così soddisfatta dei risultati ottenuti con l'SDK per gli annunci che ha eseguito la migrazione dell'intero livello di database alla stanza virtuale. Eseguire test è stato facile e la protezione
di Room contro l'annullamento della registrazione ha ridotto le perdite di memoria.
Android Architecture Componenti contribuisce anche a produrre meno impronte di memoria.
"Android Architecture Componenti ha fornito una prescrizione per risolvere molti
dei problemi che gli sviluppatori devono affrontare su scala diversa", afferma Lawton.
"Grazie all'uso di componenti sensibili al ciclo di vita, Tinder è riuscita a migliorare
la produttività, la testbilità e la modularità degli sviluppatori, favorendo al contempo
un'architettura view-first. Room elimina la necessità di altre soluzioni per la gestione di SQLite e trasforma la gestione dei database e l'esecuzione di query in un esercizio di configurazione."
Metrica
Oltre 500 righe di codice rimosse da MainActivity tramite
LifecycleObserver/
architettura dei plug-in
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2018-05-03 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2018-05-03 UTC."],[],[],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)."]]