網絡框架的優缺點

網絡框架

AFinal

https://github.com/yangfuhai/afinal

優點:

  • 自動異步請求,不會造成主線程阻塞
  • 內部提供文件下載功能

缺點:

  • 對HTTP請求沒有任何緩存策略,不符合HTTP緩存協議
  • 不提供請求取消功能
  • 請求無優先級概念
  • 未修復HttpUrlConnection的BUG

Volley

https://github.com/mcxiaoke/android-volley

優點:

  • 內部提供4個網絡請求線程及1個緩存調度線程輔助請求,效率高
  • 遵循HTTP標準協議處理緩存相關策略
  • 請求有優先級概念
  • 支持不同類型請求的自定義擴展
  • 支持取消已發出的請求
  • 提供接口給用戶自己實現網絡請求層

缺點:

  • 對大數據及流媒體沒有較好支持
  • 內置HttpStack對SSL、OAUTH支持存在隱患

OkHttp

https://github.com/square/okhttp

優點:

  • HttpUrlConnection的修復擴展,android系統內部也採用了這個框架
  • 支持SPDY協議
  • 遵循HTTP標準協議的緩存管理策略
  • 同時提供同步、異步請求接口
  • 可以對請求進行攔截
  • 擁有連接池重用機制
  • 支持請求取消

缺點:

  • 默認是同步獲取響應數據,增大出錯機率
  • 依賴Okio,導致整體框架庫增大
  • 對於簡單的HTTP網絡請求略顯沉重,不夠輕量

結論

  • AFinal由於其內部糟糕的線程池管理及毫無HTTP緩存的原因強烈建議廢棄,浪費了大量服務器帶寬。
  • Volley內部有良好的請求調度機制,並且對各種網絡請求有着極好的擴展性,但是內部使用的HttpStack對於如SSL認證和OAUTH2.0在不同Android平臺存在隱患。
  • Okhttp是最好的網絡請求實現層,對各種協議支持較好,但是由於其可擴展性太高,在用戶使用時導致需要考慮的偏多,框架偏重。

有一種比較折中的實現方案是使用Volley作爲調度管理,由於Volley提供了HttpStack可設置的接口,所以可以使用Okhttp作爲真實的網絡請求層來避免協議隱患問題。相關鏈接



 

ImageLoader

Volley

https://github.com/mcxiaoke/android-volley

Volley首先本質上是網絡框架,只是內部提供了ImageRequest作爲圖片加載功能,嚴格意義上講並不屬於ImageLoader家族。緩存部分,其內部預留了ImageCache接口,可以直接對接一級緩存(內存緩存),但是如果想對接二級緩存(磁盤緩存)的話需要對原有代碼做一定改動。

Universal-ImageLoader

https://github.com/nostra13/Android-Universal-Image-Loader

老牌ImageLoader,內部結構複雜不易於定製與裁剪,使用麻煩,需要對顯示、緩存做許多額外配置。

Picasso

https://github.com/square/picasso

Squre公司出品,JakeWharton主刀。快速入手,代碼結構清晰明瞭,易於二次開發及裁剪。

  • 自動管理一二級緩存
  • 自動取消ImageView的回收和請求取消
  • 可以對圖片加載過程進行攔截

缺點:

  • 二級緩存速度略慢

Glide

https://github.com/bumptech/glide

Google員工出品,GoogleIO2014 app中首次出現,使用同picasso基本一致,但是有更強大的功能擴展,支持gif解析,同時在緩存管理十分優秀,緩存加載速度優於picasso。與picasso特性能夠重合。

缺點:

  • API 10(測試可以在項目中正常使用,原因正在查看)
  • 庫體積有470k+,較大

Fresco

https://github.com/facebook/fresco

Facebook出品,首個需要so庫支撐的ImageLoader,專爲圖片瀏覽類APP服務,如Facebook,Twitter,圖釘等有超多圖片展現、瀑布流交互的APP。

優點:

  • 使用到了匿名緩存空間,減輕了虛擬機內存空間壓力
  • 提供了原生gif解析及控件支持

缺點:

  • 對於非圖片強展示型app來說功能冗餘
  • 由於so庫的存在,導致整體庫高達2M
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章