Android开源框架如何说-Volley

  • 概念
    • Goole 发布的网络通信库,使网络通信更快、更简单、更健壮。
    • 关键词:数据不大但通信频繁
    • 功能:
      • Json,图像等异步下载
      • 网络请求的排序(scheduling)
      • 网络请求的优先级处理
      • 和 Activity 的生命周期联动(Activity 结束时同时取消所有网络请求)
    • 优点:
      • 非常适合进行数据量不大,但通信频繁的网络操作
      • 可直接在主线程调用服务端并处理返回结果
      • 可以取消请求,容易扩展,面向接口编程
      • 网络请求线程NetworkDispatcher默认开启了4个,可以优化,通过手机CPU数量
      • 通过使用标准的HTTP缓存机制保持磁盘和内存响应的一致
    • 缺点:
      • 6.0不支持httpclient了,如果想支持得添加org.apache.http.legacy.jar
      • 对大文件下载 Volley的表现非常糟糕(多个线程同时内存占用就很高,很容易oom)
      • 只支持http请求
  • 流程结构
    • Volley 运行的过程中一共有三种线程,包括 UI 线程、Cache 调度线程和 NetWork 调度线程池
      • Volley 的入口是创建一个RequestQueue 队列,然后开启一个缓存线程和一组网络线程,等待用户 add 新的 request(请求可使用默认的也自定义)
      • Request根据优先级加入RequestQueue,然后判断是否加入Cache,加入对应的网络、缓存的阻塞队列(线程安全)
    • 请求加入优先级队列,Cache 线程进行筛选,如果命中(hit)分发给 UI 线程
      • CacheDispacher,从缓存阻塞队列拿一个request,去缓存里面进行缓存调度查找匹配,如果命中返回
    • 未命中(miss)交给 NetWork 调度线程池处理
      • NetworkDispacher,从网络阻塞队列拿一个request,执行根据传入的选择HttpUrlConnection或者HttpClient进行网络请求,根据返回状态码是否进行缓存
    • 取回后更新 Cache 并分发给 UI 线程,每次请求执行过程始于 UI 线程, 终于 UI 线程
      • ExcutorDelivery将Response 使用Handler机制Post到主线程,然后回调到开始开发者创建的mRequest对象上
Android开源框架如何说-Volley_第1张图片
官方流程图

你可能感兴趣的:(Android开源框架如何说-Volley)