1. 程式人生 > >Android基礎架構設計

Android基礎架構設計

最近公司因為發展,會新開幾個專案,領導讓整理下基礎框架好統一使用,也方便其他人員熟悉程式碼。因此,再次記錄一下。

1.1基本結構

基本架構我先用現在市面普及和成熟的mvp(model-view-presenter),我的理念是職責分層,高內聚低耦合。

MVP模式的核心思想:

相對於我們大家以前熟知的mvc來說,mvp把activity中的UI邏輯抽象成View介面,吧業務邏輯抽象成presenter介面,model類還是原來的model。

1.2mvp模式的作用

1.分離了師徒邏輯和業務邏輯,降低了耦合

2.ativity只處理生命週期的任務,程式碼變得更加簡潔

3.檢視邏輯個業務邏輯分別抽象到了view和presenter的介面中去,提高程式碼的可閱讀性

4.presenter被抽象成介面,可以有多重具體的實現,所以方便進行單元測試

5.把業務邏輯抽到presneter中去,避免後臺執行緒引用著activity導致activity的資源無法被系統

回收從而引起記憶體洩露和oom

1.3mvp模式的使用

  1. 建立IPresenter介面,把所有業務邏輯的介面都放在這裡,並建立它的實現PresenterCompl(在這裡可以方便地檢視業務的功能,由於介面可以有多重實現所以也方便寫單元測試)
  2. 建立IView介面,把所有檢視邏輯的介面都放在這裡,其實現類是當前的activity/fragment
  3. 由UML圖可以看出,activity裡包含了一個IPresenter,而PresenterCompl裡又包含了一個IView並且依賴了Model。activity裡面只保留定義IPresenter的呼叫,其它工作全部留到PresenterCompl中實現
  4. Model並不是必須有的,但是一定會有view和presenter

2.1引入的第三方技術

重複造輪子是不可取的,有些模組根本沒有必要自己寫,一下是引入的第三方庫,以及說明

2.1.1網路請求庫retrofit+rxjava

Retrofit:Retrofit是Square公司開發的一款針對Android 網路請求的框架(底層預設是基於OkHttp 實現)。

RxJava :一個在 Java VM 上使用可觀測的序列來組成非同步的、基於事件的程式的庫。RxJava使非同步操作變得非常簡單。

  • 網路請求過程中token的處理
  • 網路請求資料的加密和解密
  • 為每個請求新增固定的頭部,比如說當前的版本號等
  • 規範化每個網路請求,讓程式碼只寫一次

rxjava+retrofit網路訪問流程的規範化:

1.發起網路請求:

      a.新增頭資訊

      b.資料加密

2.收到伺服器響應

   a.解析伺服器返回的結果,檢查狀態碼,做出對應處理。

   b.攔截錯誤:檢查狀態碼是否為token過期

      1.如果是,那麼重新獲取token並重新發起請求

       2.如果不是,繼續向下執行

  c.攔截錯誤:檢查全部的錯誤,並通過自定義異常處理對應的錯誤。

可以看出來,在發出網路請求的時候的邏輯,都是由retrofit的攔截器來實現的,那麼在處理請求結果的時候,都是由rxjava來實現的,所以,整個邏輯就很清晰明瞭了。

2.1.2圖片載入框架glide

Glide,一個被google所推薦的圖片載入庫

2.1.3輪播圖

Android廣告圖片輪播控制元件,支援無限迴圈和多種主題,可以靈活設定輪播樣式、動畫、輪播和切換時間、位置、圖片載入框架等!

2.1.4AndroidUtilsCode工具類

2.1.5Fragmentation

為"單Activity + 多Fragment的架構","多模組Activity + 多Fragment的架構"而生,幫你簡化使用過程,輕鬆解決各種複雜巢狀等問題,修復了官方Fragment庫存在的一些BUG。

2.1.6Arouter 路由框架

一個用於Android app進行元件化改造的框架,支援模組間的路由、通訊、解耦。

https://github.com/alibaba/ARouter

2.2基礎元件封裝

2.2.1基礎回撥介面

public interface SubscriberOnNextListener<T> {
    void onNext(T t);
    void onError(Throwable e);

}

2.2.2頭部導航欄封裝(TopBar)

 <com.haolyy.haolyy.custom.TopBar
        android:id="@+id/topBar"
        android:layout_width="0dp"
        android:layout_marginTop="20dp"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        app:drawableLeft="@drawable/icon_back"
        app:drawableLeftVisibility="true"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:title="登入"
        app:titleTextColor="#4A4A4A"
        app:titleTextSize="16sp"
        app:top_background="#FFFFFF" />

    <View

2.2.3Adapter封裝

2.2.4Base基類封裝

  1. Basefragment
  2. BasePresenter
  3. BasePresenter
  4. BaseView
  5. BaseData
  6. RetrofitManage

好了,基本就這些,其實對於基礎框架的搭建仁者見仁智者見智,選擇一個最適合自己,最熟悉的就行,不足的地方希望大家指正。

最後附上原始碼,僅供參考!

相關推薦

Android基礎架構設計

最近公司因為發展,會新開幾個專案,領導讓整理下基礎框架好統一使用,也方便其他人員熟悉程式碼。因此,再次記錄一下。 1.1基本結構 基本架構我先用現在市面普及和成熟的mvp(model-view-presenter),我的理念是職責分層,高內聚低耦合。 MVP模式的核

android app 架構設計01

clas -h tab size data 資源 top post 樣式 1:本文有摘抄, 1 2 3 4 5 - 開發過程中。需求、設計、編碼的一致性 - 整個程序具有統一的風格,比方對話框樣式,button風格,色調等UI元素 - 整個程序詳細統一的結

Android工程架構設計:Base Library(基層MVP框架)基於EventBus

Base Library部分把App中Application,UI(activity,fragment)公用方法重新封裝成模板方法,並開放對子類的擴充套件。同時融入mvp設計思想,封裝成基於mvp的基層架構體系。 目錄 1,IApplication(介面): 2,BaseAp

Android工程架構設計:專案群架構設計

我們寫程式碼的時候,經常會把多個類相同的功能程式碼(方法)抽出來封裝成父類,各個子類繼承父類再做擴充套件。 隨著公司開發維護的專案越來越多,你會發現各個專案中有一些通用的可複用的程式碼或者模組,考慮到資源替換,工程複用等問題,需要把公共部分剝離出來。 公司名為sky_dreaming,目前公

Android基礎架構

引言 我們對android有了個大致的瞭解,知道如何搭建android的環境及簡單地寫一個HelloWorld程式,而且知道一個android專案包括哪些資料夾和檔案及相應的作用。本篇將站在頂級的高度——架構,來看android。我開篇就說了,這個系列適合0基礎的人且我也是

Android基礎架構之MVP模型

最近工作上碰到了一個Android專案需要重構,因為之前的專案是MV模式,UI和業務混雜在一起,加上最初開發這個專案的程式設計師離職,這個專案已經處於維護十分困難的情況,最終選擇重構。考慮到本專案屬於業務複雜度中等的專案,而且希望新的專案具有鮮明的UI-業務-資

企業IT基礎架構設計概要

企業內網IT模型 應用層:公司業務的技術化體現,指應用系統,比如企業的ERP,OA,CRM 基礎系統層:檔案、郵件、windows桌面管理、虛擬化 網路層:路由器、交換機、防火牆組成的網際網路絡 機房層:狹義上可以理解就是咱伺服器、交換機存放的機房,廣義上包括IT所有物理層

Android App 架構設計

簡介 本文是對谷歌原生文件的翻譯,僅供學習參照。 原文連結 此文件寫給希望學習最優程式設計實踐和架構以開發健壯、高質量APP的開發者。 開發者常遇到的問題 傳統的桌面程式大多數使用場景是有一個啟動入口,作為一個獨立程序執行。Android app結

Android-IM架構設計

###1. 架構總覽 ###2. 模組介紹 ####2.1 協議封裝與任務流程 #####1) 協議與任務的封裝 a. 協議有協議頭(協議頭因為格式相同,被抽象出來)和協議體組成,協議有兩類:請求協議(request)和回覆協議(response); b. 任務(action)由請求協議、回覆協議和

Android App的設計架構:MVC,MVP,MVVM與架構經驗談

用戶 自己的 req html pla 觀察 持久化 重構 his 來源: Android App的設計架構:MVC,MVP,MVVM與架構經驗談 和MVC框架模式一樣,Model模型處理數據代碼不變在Android的App開發中,很多人經常會頭疼於App的架構如何設計:

老男孩教育每日一題-第96天-網站並發知識點:pv-並發與架構設計基礎知識

每日一題 並發 pv 你想建設一個能承受500萬PV/每天的網站嗎? 500萬PV是什麽概念?服務器每秒要處理多少個請求才能應對?如何計算呢?答案參考:PV是什麽:PV是page view的簡寫。PV是指頁面的訪問次數,每打開或刷新一次頁面,就算做一個pv。計算模型:每臺服務器每秒處理請求的數量=

Android架構師之路 網絡層架構設計與實戰

安卓 第1章 課前須知介紹如何去學習,課程適合的人群、怎麽才能融會貫通第2章 主流網絡框架分析常用網絡框架介紹,分析volley 、Android-async-http、Afinal框架、xUtils、okhttp、retrofit、優有點缺點、教會選擇一個框架的標準是什麽?第3章 http協議詳解介紹htt

android實踐的一些思考:實現一個MVP架構設計

    MVP是從MVC架構演變而來的,目的是為了使得程式開發高內聚低耦合,易於擴充套件,方便維護。      MVC中的M指的是model模型, V 指的是View檢視,C指的是Controller。  MVC 大體的思想是,控制器控

Android中Looper的架構設計與賞析

0.你將獲得什麼? 看完本篇文章,你將搞清楚以下所有的關於Handler相關的任何問題。如果你以後在面試中碰到Handler相關的問題,相信你會給面試官眼前一亮的感覺。 Handler整個訊息處理的架構是什麼樣的? 什麼是ThreadLocal?Looper?Messa

APP社交類專案設計之六ANDROID前臺架構及通訊介紹

       前臺安卓功能採用了MVP架構,與後臺通訊使用了當前主流的RetrofitManager網路通訊外掛,底層通訊過程封裝了Okhttp。在與後臺實際通訊過程中,RetrofitManager是單例模式,如下圖所示    

微服務架構設計基礎之領域驅動設計

背景 微服務現在可以說是軟體研發領域無人不提的話題,然而業界流行的對比多數都是所謂的Monolithic(單體應用),而大量的系統在十幾年前都已經是以SOA(面向服務架構)為基礎的分散式系統了,那麼微服務作為新的架構標準與SOA有什麼差異點呢?其本質區別在於設計原理,微服務是去中心化設計,SOA是「整合」形成

微服務架構設計基礎之立方體模型

背景 對於現在的微服務架構的應用來說,對大量併發的及時響應是一項制勝能力。據使用者行為分析平臺統計,隨行付的某一款APP產品每日請求就達到上千萬次使用者請求、加解密服務3000萬次/日等等。這些微服務每時每刻在處理如此高強度的請求,對資料層的應對能力要求極高。如果我們把對速度的需求放在複雜的分散式資料架構背

【遊戲策劃】《遊戲架構設計與策劃基礎》學習收穫要點-------遊戲規則設計

規則體系: (遊戲中相關規則不只下列這些規則) 世界相關規則 世界環境物品發生什麼樣的情況,會對玩家產生怎麼樣的影響 角色相關規則 角色在怎麼樣的情況下做什麼 角色等級設計(升級途徑,代價,獎勵) 角色物品欄(空間大小,物品型別,物品耐久屬性,物品有效時間等等)

Android 架構設計:MVC、MVP、MVVM和元件化

MVC、MVP和MVVM是常見的三種架構設計模式,當前MVP和MVVM的使用相對比較廣泛,當然MVC也並沒有過時之說。而所謂的元件化就是指將應用根據業務需求劃分成各個模組來進行開發,每個模組又可以編譯成獨立的APP進行開發。理論上講,元件化和前面三種架構設計不是

Android Material Design設計基礎

                     文章簡介本文主要記錄一些用於MD設計的小控制元件或新概念等,輔助MD設計。Palette調色盤,可以根據Bitmap獲取多種色調用於調整ActionBar和StatusBar等,使介面更加和諧。使用前請自行引入依賴:compile 'com.android.suppo