Tinder 運用 Android 架構元件解決約會應用程式的問題
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
Tinder 是全球最受歡迎的認識新朋友應用程式,目前已知能改變參與者的會面方式和日期,可讓使用者向右滑動以便與他人聯繫和聊天。Tinder 每天的比對相符次數超過 2, 600 萬,從 2012 年推出至今,已有超過 200 億場相符項目。
該公司必須根據使用者需求,快速擴充應用程式,但過去幾天就未執行資料庫實作作業,因此拓展變得更複雜。這些程式庫也使用密集檢視的架構,可減少生命週期的複雜性,但需要知道特定活動與哪些生命週期事件相關。但是缺少一致的架構,用於處理工作,例如將 Cursor
物件合併為網域物件、使資料庫遷移作業,或持續執行查詢。
具體措施
Tinder 採用 Android 架構元件來升級程式碼。他們使用 Lifecycle
來觀察 View
其代管活動的生命週期,並使用 LifecycleObserver
協助進行去中心化外掛程式架構,並預防 Presenter
、Activity
和 View
物件暴增。Room 持續性程式庫提供定義、管理及查詢本機資料庫的立即可用方法。
Tinder 開發團隊只花了短短兩週的時間就實作 LifecycleObserver
和外掛程式架構,並為內部廣告 SDK 順利導入 Room,只花了兩天就完成。
Tinder 的 Android 主管 Andy Lawton 表示:「我們不必再花大量時間管理外掛程式或檢視區塊外的活動生命週期。
「Room 的設計經過精心設計,可以輕鬆實作持續性層。在內部廣告 SDK 使用 Room 可能節省了一週的預先開發時間。」
成果
Tinder 對廣告 SDK 的成效相當滿意,他們決定將整個資料庫層遷移至 Room。測試相當簡單,且 Room 的防護機制可防止忘記取消註冊記憶體流失的問題。Android 架構元件也有助於產生較小的記憶體使用量。
Lawton 表示:「Android 架構元件提供處方藥,以解決開發人員在不同規模下面對的許多問題。「Tinder 運用生命週期感知元件,成功提高開發人員的工作效率、可測試性和模組化,同時實踐以檢視畫面優先的架構。Room 省去其他管理 SQLite 解決方案的麻煩,並將資料庫管理和查詢功能轉化為設定中的運動。」
指標
已透過 LifecycleObserver
/外掛程式架構,從 MainActivity
移除超過 500 行程式碼
開始使用
Android 架構元件開放所有開發人員使用,這是 Android Jetpack 的一部分。開始使用 Android 架構元件。
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2018-05-03 (世界標準時間)。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"缺少我需要的資訊"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"過於複雜/步驟過多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"過時"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻譯問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/程式碼問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"容易理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"確實解決了我的問題"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u4e0a\u6b21\u66f4\u65b0\u6642\u9593\uff1a2018-05-03 (\u4e16\u754c\u6a19\u6e96\u6642\u9593)\u3002"}
[[["容易理解","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 (世界標準時間)。"]]