美文网首页
Android技术选型

Android技术选型

作者: 叮咚象JC | 来源:发表于2018-05-01 20:32 被阅读20次

    软件架构

    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技术选型

          本文链接:https://www.haomeiwen.com/subject/ofyfrftx.html