<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          谷歌最支持的 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同時是視圖和控制器,這違反了單一責任原則,這是這個架構的關鍵。


          MVP


          Android社區(qū)開始越來越多地利用MVP模式,在這個模式中,業(yè)務邏輯被定義在名為presenter的類中。1個view 對應一個presenter,事實證明,這種模式非常有效,因為業(yè)務邏輯很好地隔離了,View可以獨立于presenter交換出來。


          MVVM


          MVVM是Model-View-ViewModel的簡寫。它本質上就是MVC 的改進版。MVVM 就是將其中的View 的狀態(tài)和行為抽象化,讓我們將視圖 UI 和業(yè)務邏輯分開。當然這些事 ViewModel 已經幫我們做了,它可以取出 Model 的數據同時幫忙處理 View 中由于需要展示內容而涉及的業(yè)務邏輯。


          MVI
          對于更細粒度的方法,可以引入意圖的概念。每個用戶交互都是定義應用程序屏幕的意圖集合的一個實例,屏幕上的每一個變化都被封裝在另一個意圖中,該意圖從一個中心位置(如演示器、控制器或狀態(tài)機)發(fā)回。這里的主要思想是提供一個單向數據流(UDF),其中數據和屏幕更改來自一個地方,但流向單個方向。


          谷歌推薦的Android應用架構

          在以上這些選項中,谷歌真正推薦的是什么?MVVM,下面就讓我們深入了解一下MVVM工具集的基本構建塊。關注公眾號 逆鋒起筆,回復 pdf,下載你需要的各種學習資料。


          Jetpack

          Jetpack是谷歌用于構建和架構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中獲取數據,而不需要任何網絡調用。


          LiveData

          LiveData是一個數據持有類,它是一個特殊的類,它知道如何與生命周期所有者(如活動和片段)對話。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
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品级品日韩免费观看 | 六月丁香综合在线 | 伊人97 | 大屌肏屄视频在线播放。 | 青青草2017在线视频 |