美文网首页如何说
Android开源框架如何说-Volley

Android开源框架如何说-Volley

作者: MigrationUK | 来源:发表于2018-08-23 15:48 被阅读0次
    • 概念
      • 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

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