Android技術(shù)選型

軟件架構(gòu)

MVC MVP MVVM
介紹 Model:數(shù)據(jù)結(jié)構(gòu)相關(guān)的類
View:XML文件
Controller:Activity
view:Activity,F(xiàn)ragment,Adapter等直接和UI相關(guān)的類
Model:數(shù)據(jù)結(jié)構(gòu)和操作相關(guān)的類
Presenter:作為View與Model交互的中間紐帶,處理與用戶交互的業(yè)務(wù)邏輯
iew interface:需要View實(shí)現(xiàn)的接口,View通過View interface與Presenter進(jìn)行交互
MVVM可以算是MVP的升級版,Model和View類似MVP
VM是ViewModel的縮寫,ViewModel可以理解成是View的數(shù)據(jù)模型和Presenter的合體
優(yōu)點(diǎn) 代碼結(jié)構(gòu)簡單 view層和model層分離
可將一個Presenter用于多個視圖
方便單元測試
用戶直接交互的是View
View和ViewModel是多對一的關(guān)系
View和ViewModel的雙向數(shù)據(jù)綁定
缺點(diǎn) xml作為view層,可控性較差
view層和model層存在耦合
Activity代碼臃腫
由于通過接口進(jìn)行控制,接口粒度不好控制
UI驅(qū)動,要考慮線程及生命周期
V層和P層存在耦合
復(fù)雜業(yè)務(wù)也會導(dǎo)致P層代碼臃腫
由于去除了Presenter層,會導(dǎo)致view層依然過重

網(wǎng)絡(luò)加載框架

HTTP客戶端

HttpClient HttpURLConnection OkHttp
介紹 Apache的一個三方網(wǎng)絡(luò)框架 一個多用途、輕量級的http客戶端 Square 公司封裝的一個高性能 http 請求庫
優(yōu)點(diǎn) 網(wǎng)絡(luò)請求做了完善的封裝,api眾多,用起來比較方便,開發(fā)快。實(shí)現(xiàn)比較穩(wěn)定,bug比較少 由于API比較簡單,使得我們可以更加容易的去使用和拓展它 鏈接復(fù)用
Response 緩存和 Cookie
默認(rèn) GZIP
請求失敗自動重連
DNS 擴(kuò)展
Http2/SPDY/WebSocket協(xié)議支持
缺點(diǎn) 由于其api眾多,是我們很難再不破壞兼容性的情況下對其進(jìn)行擴(kuò)展,在android5.0被廢棄,6.0逐漸刪除 它對網(wǎng)絡(luò)請求的封裝沒有HttpClient徹底,api比較簡單,用起來沒有那么方便 okhttp請求網(wǎng)絡(luò)切換回來是在線程里面的,不是在主線程,不能直接刷新UI,需要我們手動處理。封裝比較麻煩

總結(jié):Android2.3以前適合使用HttpClient,而2.3以后適用于OkHttp,HttpURLConnection在Android4.4以后已將底層改用OkHttp,但是OkHttp使用時(shí)需要進(jìn)行一層封裝

封裝框架

volley Retrofit
介紹 一個簡單的異步http庫 Square 公司出品的默認(rèn)基于 OkHttp 封裝的一套 RESTful 網(wǎng)絡(luò)請求框架
優(yōu)點(diǎn) 支持圖像加載
自帶緩存,支持自定義請求
輕量級網(wǎng)絡(luò)交互,適合大量的,小數(shù)據(jù)傳輸。
徹底解耦
默認(rèn)使用 OkHttp ,性能上要比 Volley 占優(yōu)勢
支持同步、異步和RxJava
缺點(diǎn) 不支持 post 大數(shù)據(jù),不適合上傳文件
圖片加載性能一般
比較高的門檻

總結(jié):volley使用簡單,適合用于多次的小數(shù)據(jù)傳輸;Retrofit適用范圍較廣,API使用簡單,但有一定使用門檻,配合RxJava使用更佳

圖片加載框架

Glide Picasso Fresco
介紹 2014年 Google 員工的開源項(xiàng)目 2013年 Square 開源的項(xiàng)目 2015年Facebook開源的圖片框架
優(yōu)點(diǎn) 可接受Activity/fragment的context,控制生命周期
支持git
支持okhttp,Volley
內(nèi)存友好
2級緩存
自帶統(tǒng)計(jì)監(jiān)控功能
使用復(fù)雜的圖片壓縮轉(zhuǎn)換來盡可能的減少內(nèi)存消耗
圖片的漸進(jìn)式呈現(xiàn)
圖片存儲在安卓系統(tǒng)的匿名共享內(nèi)存,無OOM
很好的支持 GIF
自定義居中焦點(diǎn)
缺點(diǎn) 大小和方法數(shù)均大于Picasso(500k和2678) 不支持git
無自動控制生命周期
2級緩存
包較大(2~3M)
使用復(fù)雜

總結(jié):Glide除了包較大幾乎擁有Picasso的所有優(yōu)點(diǎn),比較適合非專業(yè)的應(yīng)用中的圖片處理;Fresco擁有前面兩個庫的優(yōu)點(diǎn),但它的包很大,且使用門檻較高,比較適用于圖片需求較大的應(yīng)用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,374評論 25 708
  • log打印 https://www.zybuluo.com/shark0017/note/163330 提示性UI...
    石野小真人閱讀 1,292評論 0 11
  • 概述 先調(diào)用“統(tǒng)一下單”接口,在微信支付服務(wù)后臺生成預(yù)支付交易單,返回正確的預(yù)支付交易后,再調(diào)起微信支付接口,發(fā)起...
    Arthur澪閱讀 770評論 0 1
  • 秋水靜默,緩緩而至,兩岸挺拔的翠柏清峻,沿河斑斕的花草芬芳。群山爛漫,空氣中游離著早秋款款的涼意;艷陽輕柔,水面上...
    封狼居胥閱讀 1,639評論 1 17
  • 最近看到藝考消息,最大的熱點(diǎn)應(yīng)該是林妙可敲響藝術(shù)學(xué)院大門的路吧,然而林妙可的藝考成績并不傲人,剛宣告與北電無緣,淚...
    Lori不是蘿莉閱讀 708評論 0 3

友情鏈接更多精彩內(nèi)容