谷歌最支持的 Android 開發(fā)架構指南逆鋒起筆關注共 3270字,需瀏覽 7分鐘 ·2021-01-27 09:01 點擊上方“逆鋒起筆”,公眾號回復?pdf領取大佬們推薦的學習資料程序員書庫(ID:CodingBook)編譯?鏈接地址:https://productcoalition.com/a-guide-to-googles-recommended-architecture-for-android-apps-8cfc1c774755就像所有軟件一樣,Android應用程序也應該遵循通用的架構規(guī)則和模式,沒有遵循正確架構的Android應用程序往往會因為缺乏一致的設計而變得很難維護。考慮到良好架構的重要性,人們如何選擇就變得尤其重要,在大多數情況下,我更推薦谷歌的標準架構作為Android應用程序的起點,然后隨著應用程序變得越來越復雜,可以添加一些新的概念。那么谷歌推薦的Android應用開發(fā)架構指南是怎樣的呢?很簡單,以下是一些要遵循的規(guī)則:reactive使用viewmodel和LiveData使用存儲庫獲取和緩存數據在本文中,我們將討論當前正在使用的Android應用程序的通用體系結構的優(yōu)缺點,從而幫助你更好的選擇。什么才是好的軟件架構?在專注于Android之前,我想先討論一下不同軟件架構的有效性。根據我的經驗,無論平臺如何,成功實現軟件體系結構都需要三件事:簡單如果架構的可變動部分過多,則無論是在概念上還是在技術上都難以使用,假設RxJava在項目中用作并發(fā)框架,這個單獨的依賴關系意味著任何新加入項目的開發(fā)人員都需要了解RxJava,這并不是一件容易學習的事情。此外,它還可能會導致未來的設計和調試問題,隨著復雜性的增加,問題也會變得復雜起來,架構的抽象程度越低,工程師就越容易跟上進度維護項目。可維護性這個原則的主要思想是盡可能少地依賴“外部時間”。例如,假設我們的應用程序是使用帶有存儲庫模式架構的MVP開發(fā)的,如果存儲庫保存對某些特定于android的東西(如AsyncLoader)的直接引用,然后每個存儲庫類與AsyncLoader類耦合。AsyncLoader類是一個由谷歌維護的庫,它在某種程度上已被棄用,這使得它的所有依賴項也在某種程度上被棄用。當使用的依賴項沒有強大的社區(qū)支持,這種風險會變得更大,因為它們很可能被棄用,這種耦合很麻煩,并且隨著時間的推移和兼容性問題出現,使項目的維護更加困難。靈活性這個原則主要是關于變更的便捷性。例如,應用程序的UI層能否獨立于其業(yè)務邏輯或數據層,如果所有的東西都被塞進同一個片段中,這個項目將會變得十分脆弱,當實現新特性的時候,將功能分層是非常有益的,比如將業(yè)務邏輯從UI層剝離,這樣當你需要改變應用程序的一部分的時候就不會影響其他部分。Android應用程序的流行架構MVC軟件體系結構中最古老和最廣泛使用的設計模式之一是MVC,它在視圖(如何表示數據)、模型(如何構造數據)和控制器(如何處理用戶交互)之間有很強的分離。大多數情況下,Android被設計成可以遵循MVC模式。然而,Android的MVC實現的問題是,Activity同時是視圖和控制器,這違反了單一責任原則,這是這個架構的關鍵。MVPAndroid社區(qū)開始越來越多地利用MVP模式,在這個模式中,業(yè)務邏輯被定義在名為presenter的類中。1個view 對應一個presenter,事實證明,這種模式非常有效,因為業(yè)務邏輯很好地隔離了,View可以獨立于presenter交換出來。MVVMMVVM是Model-View-ViewModel的簡寫。它本質上就是MVC 的改進版。MVVM 就是將其中的View 的狀態(tài)和行為抽象化,讓我們將視圖 UI 和業(yè)務邏輯分開。當然這些事 ViewModel 已經幫我們做了,它可以取出 Model 的數據同時幫忙處理 View 中由于需要展示內容而涉及的業(yè)務邏輯。MVI對于更細粒度的方法,可以引入意圖的概念。每個用戶交互都是定義應用程序屏幕的意圖集合的一個實例,屏幕上的每一個變化都被封裝在另一個意圖中,該意圖從一個中心位置(如演示器、控制器或狀態(tài)機)發(fā)回。這里的主要思想是提供一個單向數據流(UDF),其中數據和屏幕更改來自一個地方,但流向單個方向。谷歌推薦的Android應用架構在以上這些選項中,谷歌真正推薦的是什么?MVVM,下面就讓我們深入了解一下MVVM工具集的基本構建塊。關注公眾號 逆鋒起筆,回復 pdf,下載你需要的各種學習資料。JetpackJetpack是谷歌用于構建和架構Android應用程序的工具集。它由許多不同的庫組成,幫助開發(fā)人員們擺脫自己編寫這些工具的負擔,最常用的組件有LiveData、ViewModel、Data Binding、Navigation Component和Room。MVVM作為UI層的響應式架構在MVVM的設置中,一個典型的屏幕由什么組成,在較低的層次上有一個View,Activity/Fragment,在它之上有一個視圖模型,它暴露了活數據,除了視圖模型,我們通常可以利用Room來本地存儲數據的存儲庫。ViewModel作為第一個緩存層ViewModel是一種特殊的類,它為旋轉屏幕時的常見問題提供了優(yōu)雅的解決方案,每當屏幕旋轉時,頂部的活動/片段就會被銷毀并重新創(chuàng)建,視圖中可見的數據也會丟失。這有一個很好的好處,即作為第一個緩存層,當ViewModel處于活動狀態(tài)并創(chuàng)建了一個新視圖時,該視圖可以直接從ViewModel中獲取數據,而不需要任何網絡調用。LiveDataLiveData是一個數據持有類,它是一個特殊的類,它知道如何與生命周期所有者(如活動和片段)對話。LiveData最有用的地方在于,LiveData采用了觀察者模式有關,LiveData是被觀察者,當數據有變化時會通知觀察者(UI)。LiveData還能夠感知到組件的生命周期,當組件處于DESTROYED狀態(tài)時,觀察者對象會被清除掉。存儲庫作為數據源和第二層緩存層存儲庫有一個職責,那就是為視圖模型提供數據。存儲庫可以很簡單,它們可以從網絡獲取和傳遞數據,也可以在本地緩存和存儲數據。一種常見的模式是從網絡獲取數據并將其緩存到本地,以減少網絡調用的數量,并為用戶提供脫機體驗。數據庫來源存儲庫可以在本地存儲數據,就局部持久性而言有多種選擇,Jetpack推薦Room,它負責創(chuàng)建SQLight表,并提供了存儲和檢索數據的簡單方法網絡來源在從網絡獲取數據時,谷歌推薦使用Retrofit庫。它可以與協(xié)程和多種響應類型一起工作,如JSON、XML等。谷歌的Android應用架構做得很好,正如我們所討論的,Android應用程序有多種架構。Google的主要建議支持MVVM,它利用LiveData和ViewModels之類的東西來解決Android應用程序面臨的兩個最常見的問題,邏輯和行為的正確使應用程序既靈活又易于維護。此外,Google通過其Jetpack指南提供了大量資源,(地址:https://developer.android.com/jetpack/guidehttps://developer.android.com/jetpack/guide)可幫助開發(fā)人員入門。從那里可以很容易地構建架構來支持項目需求,方法是對諸如依賴注入使用什么之類的東西進行決策。在此過程中,重要的是要記住要盡可能地簡化。谷歌程序員 20 行代碼送你一個“老婆”谷歌開源內部代碼評審規(guī)范Google的面試題長啥樣?看完被吊打!Google 出品的 Java 編碼規(guī)范,強烈推薦,既權威又科學!男在谷歌,女友在亞馬遜,曬出 2 人總收入,網友:好酸!點個『在看』支持下? 瀏覽 39點贊 評論 收藏 分享 手機掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 谷歌宣布 Android 加入對 Rust 的支持!劉望舒0Google Android開發(fā)入門指南《Google Android開發(fā)入門指南(第2版)》是一部關于Android開發(fā)的基礎教程,采用由Google Android開發(fā)入門指南Google Android開發(fā)入門指南0谷歌發(fā)布 Android 游戲開發(fā)工具包開發(fā)者全社區(qū)0全網最詳細的谷歌插件開發(fā)小冊前端壹棧0Android開發(fā)接單接單Android和webAndroid開發(fā)高效專業(yè) 負責靠譜 Android app開發(fā)接單了 微信x834712858idea-androidIDEA的Android開發(fā)插件idea-android是在IDEA集成開發(fā)環(huán)境中開發(fā)Android應用程序的插件。idea-androidIDEA的Android開發(fā)插件idea-android 是在 IDEA 集成開發(fā)環(huán)境中開發(fā) Android 應用程序的插件。Android 開發(fā) ,開發(fā)速度快 。# Android開發(fā)便宜接單啦! 有大量第三方接入經驗,開發(fā)速度快,界面潔癖,性價比極高的Android開發(fā)者來啦! 走過路過都是客,滿不滿足您進來聊聊~ 點贊 評論 收藏 分享 手機掃一掃分享分享 舉報