Android技术选型

软件架构

MVC MVP MVVM
介绍 Model:数据结构相关的类
View:XML文件
Controller:Activity
view:Activity,Fragment,Adapter等直接和UI相关的类
Model:数据结构和操作相关的类
Presenter:作为View与Model交互的中间纽带,处理与用户交互的业务逻辑
iew interface:需要View实现的接口,View通过View interface与Presenter进行交互
MVVM可以算是MVP的升级版,Model和View类似MVP
VM是ViewModel的缩写,ViewModel可以理解成是View的数据模型和Presenter的合体
优点 代码结构简单 view层和model层分离
可将一个Presenter用于多个视图
方便单元测试
用户直接交互的是View
View和ViewModel是多对一的关系
View和ViewModel的双向数据绑定
缺点 xml作为view层,可控性较差
view层和model层存在耦合
Activity代码臃肿
由于通过接口进行控制,接口粒度不好控制
UI驱动,要考虑线程及生命周期
V层和P层存在耦合
复杂业务也会导致P层代码臃肿
由于去除了Presenter层,会导致view层依然过重

网络加载框架

HTTP客户端

HttpClient HttpURLConnection OkHttp
介绍 Apache的一个三方网络框架 一个多用途、轻量级的http客户端 Square 公司封装的一个高性能 http 请求库
优点 网络请求做了完善的封装,api众多,用起来比较方便,开发快。实现比较稳定,bug比较少 由于API比较简单,使得我们可以更加容易的去使用和拓展它 链接复用
Response 缓存和 Cookie
默认 GZIP
请求失败自动重连
DNS 扩展
Http2/SPDY/WebSocket协议支持
缺点 由于其api众多,是我们很难再不破坏兼容性的情况下对其进行扩展,在android5.0被废弃,6.0逐渐删除 它对网络请求的封装没有HttpClient彻底,api比较简单,用起来没有那么方便 okhttp请求网络切换回来是在线程里面的,不是在主线程,不能直接刷新UI,需要我们手动处理。封装比较麻烦

总结:Android2.3以前适合使用HttpClient,而2.3以后适用于OkHttp,HttpURLConnection在Android4.4以后已将底层改用OkHttp,但是OkHttp使用时需要进行一层封装

封装框架

volley Retrofit
介绍 一个简单的异步http库 Square 公司出品的默认基于 OkHttp 封装的一套 RESTful 网络请求框架
优点 支持图像加载
自带缓存,支持自定义请求
轻量级网络交互,适合大量的,小数据传输。
彻底解耦
默认使用 OkHttp ,性能上要比 Volley 占优势
支持同步、异步和RxJava
缺点 不支持 post 大数据,不适合上传文件
图片加载性能一般
比较高的门槛

总结:volley使用简单,适合用于多次的小数据传输;Retrofit适用范围较广,API使用简单,但有一定使用门槛,配合RxJava使用更佳

图片加载框架

Glide Picasso Fresco
介绍 2014年 Google 员工的开源项目 2013年 Square 开源的项目 2015年Facebook开源的图片框架
优点 可接受Activity/fragment的context,控制生命周期
支持git
支持okhttp,Volley
内存友好
2级缓存
自带统计监控功能
使用复杂的图片压缩转换来尽可能的减少内存消耗
图片的渐进式呈现
图片存储在安卓系统的匿名共享内存,无OOM
很好的支持 GIF
自定义居中焦点
缺点 大小和方法数均大于Picasso(500k和2678) 不支持git
无自动控制生命周期
2级缓存
包较大(2~3M)
使用复杂

总结:Glide除了包较大几乎拥有Picasso的所有优点,比较适合非专业的应用中的图片处理;Fresco拥有前面两个库的优点,但它的包很大,且使用门槛较高,比较适用于图片需求较大的应用

你可能感兴趣的:(android)