android 三方开源库 网络库、图片加载库

android 网络库部分:Volley、Retrofit、OkHttp、HttpURLConnection的比较、、Cronet
    - 对比网址:https://cloud.tencent.com/developer/article/2450505

四、OkHttp    出自Square公司
1.     官网:    https://square.github.io/okhttp/
    OkHttp同样出自Square公司,是一个高性能的HTTP客户端库。它主要解决了Android平台原生HTTP库的一些性能问题。OkHttp支持 HTTP/2 和 WebSocket 协议,可以作为其他网络库的底层实现。OkHttp 的源码中,可以看到如下特性:
    OkHttpClient 类是核心组件,负责创建和管理请求。它使用了连接池(ConnectionPool 类)和请求压缩等技术来提高性能。
    Request 类表示一个 HTTP 请求。它包含请求的 URL、方法、头部等信息。
    Call 类表示一个请求的执行。它可以执行同步请求(execute 方法)或异步请求(enqueue 方法)。
    OkHttp 支持 WebSocket 协议。这是通过 WebSocket 接口和 RealWebSocket 类实现的。可以使用 newWebSocket 方法创建一个 WebSocket 连接。
    
2. 优点:    
    - 高性能:OkHttp具有连接池、请求压缩等特性,提高了网络请求的性能。
3. 适用场景:
    · 对性能要求较高的网络请求
    · 处理大文件下载和上传任务。
    · 需要支持HTTP/2或WebSocket协议的应用。
    -作为其他网络库(如Retrofit)的底层实现。

三、Volley          Google官方推出的
1. Volley是Google官方推出的一个Android网络库,它的主要优点在于对请求的自动调度和优先级处理,以及内存和性能的优化。Volley 的源码中,可以看到如下特性:
    Request 类包含一个 priority 属性,用于表示请求的优先级。Volley 会根据优先级对请求进行排序和调度。
    RequestQueue 类是 Volley 的核心组件,负责管理和调度请求。它使用一个 PriorityBlockingQueue 来存储请求,并根据请求的优先级进行排序。
    NetworkDispatcher 类负责处理请求队列中的请求。它会根据请求的优先级执行请求,并将结果分发给相应的回调函数。
    Volley 使用了 LruCache 类作为内存缓存,可以有效减少内存占用。在 ImageLoader 类中,可以看到 Volley 如何处理图片缓存。

2. 优点:
    请求优先级处理、内存优化-适用了bitmap的内存缓存、允许自定义请求、
    缺点:    不支持大文件、不支持同步
3. 适用场景:
    - 轻量级的网络请求,如JSON数据的获取、图片加载等、
    - 请求优先级排序

二、Retrofit    Square公司推出的
1. 
    官网:            http://square.github.io/retrofit/
    github地址:        https://github.com/square/retrofit
    Simple HTTP with Retrofit2:    https://link.jianshu.com/?t=https://realm.io/news/droidcon-jake-wharton-simple-http-retrofit-2/
      1.2  Retrofit是Square公司推出的一个类型安全的网络库,它的核心思想是将HTTP API转化为Java接口。Retrofit具有高度可定制性和强大的功能。Retrofit 的源码中,可以看到如下特性:
    Retrofit 类是核心组件,负责创建 API 接口的实现。它使用动态代理技术将 HTTP API 转换为 Java 接口。
    Call 类表示一个请求,可以执行同步请求(execute 方法)或异步请求(enqueue 方法)。
    Callback 类用于处理异步请求的结果。开发者可以实现 onResponse 和 onFailure 方法来处理成功和失败的情况。
    Retrofit 支持多种数据解析方式,如 Gson、Moshi 等。这是通过 Converter.Factory 类实现的。开发者可以自定义转换器来处理特定的数据格式。

2. 优点
    · 类型安全:Retrofit将HTTP API转化为Java接口,使得开发者可以更安全、更简洁地处理网络请求。
    · 高度可定制:Retrofit支持多种数据解析方式,如Gson、Moshi等,同时允许开发者自定义请求处理。
    · 支持同步和异步请求:Retrofit既支持同步请求,也支持异步请求,满足不同场景的需求。
    · 集成OkHttp:Retrofit默认使用OkHttp作为底层网络库,继承了OkHttp的诸多优点。
    · · · 请求的方法参数注解都可以定制、支持同步/异步/和RxJava、超级解耦、可配置不同的HTTP client实现网络请求
3. 适用场景:
    定制化、
    同步/异步、
    RESTful API的请求处理
        - 什么是Restful API?      https://blog.csdn.net/weixin_51444308/article/details/141247505
            唯一的URI资源标识、无状态的-请求独立且服务器不保存客户端状态、且使用标准的HTTP状态码、
            表述型:资源可有不同表述形式:JSON/XML/HTML等、
4. retrofit配置和使用:
    - https://blog.csdn.net/carson_ho/article/details/73732076
    - retrofit常用注解介绍、okhttp、RXjava : https://www.jianshu.com/p/a94e38636fde/
    build.gradle:    
        - compile 'com.squareup.retrofit2:retrofit:2.1.0'
        compile 'com.squareup.retrofit2:converter-gson:2.1.0'
        compile 'com.squareup.okhttp3:okhttp:3.4.1'
5. 相关:RxJava
    - RxJava在Android中是一个处理异步操作和事件流的强大库,RxJava是一个在Java VM上使用可观测的序列来组成异步的、基于事件的程序的库。
    - 其基于一种扩展的观察者模式,该模式中有四个关键角色:Observable(被观察者)、Observer(观察者)、subscribe(订阅)以及事件。Observable通过subscribe方法按顺序发送事件给Observer,Observer则按顺序接收事件并作出对应的响应动作。
    - 耗时操作、大文件保存等、异步操作:RxJava + Retrofit处理网络请求。定时轮询-后台异步任务/定时进度并更新到UI、
    - RxJava还可以用于延时执行、轮播图实现、监听EditText的字符串改动等多种场景。
    

一. ‌Cronet‌是一个基于‌Chromium‌网络组件的Android网络请求框架,它利用了Google Chrome浏览器的网络堆栈,提供了高效、低延迟的HTTP和TCP/IP通信能力。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
android 图片库部分:Fresco、Picasso、Glide、

四、UniversalImageLoader图片加载库    由‌俄罗斯开发者Vladimir Sitnikov‌所开发,项目在2015年停止维护
1. github地址 && 适用配置    
    https://gitcode.com/gh_mirrors/an/Android-Universal-Image-Loader?utm_source=csdn_github_accelerator&isLogin=1
    https://gitcode.com/gh_mirrors/an/Android-Universal-Image-Loader
    https://github.com/nostra13/Android-Universal-Image-Loader
‌2. 优点:
    多线程异步加载‌    支持从网络、本地文件系统、assets目录及drawable资源加载图片‌36。
‌    灵活配置‌        可自定义线程池、缓存策略(内存/磁盘)、图片解码方式等‌36。
    ‌缓存机制‌        支持内存缓存(LRU)、文件系统缓存及SD卡缓存‌36。
‌    性能优化‌        根据ImageView尺寸动态裁剪Bitmap,减少内存占用‌67。
‌    加载控制‌        支持暂停/恢复加载,适用于ListView、GridView滑动优化‌

三、Fresco 图片加载库       Fresco 由 Facebook Android 工程师负责开发。
1. AVIF(AV1 Image File Format)格式文件是一种近些年出现的新型格式图像文件规范、AVIF 是一种基于 AV1 视频编码的新一代图像格式    官网:https://cloudconvert.com/avif-converter
    avif集成:https://cloud.tencent.com/document/product/436/115610
    · 安装 Fresco 和 AVIF SDK
        - implementation 'com.qcloud.cos:avif:1.1.0'   
        implementation 'com.facebook.fresco:fresco:version'
        // 如果需要支持 avif 动图解码器 则需要加上 fresco:animated-base 依赖
        implementation 'com.facebook.fresco:animated-base:version'
2. Fresco官网:
    https://frescolib.org/docs/index.html
    github地址:https://github.com/facebook/fresco

3. 配置:
    - implementation 'com.facebook.fresco:fresco:3.6.0'

二.二  Coil库    线圈库-适用于 Android 和 Compose Multiplatform 的图片加载库
    · 快速:Coil 执行许多优化,包括内存和磁盘缓存、降低图像采样、自动暂停/取消请求等。
    · 轻量级:Coil 仅依赖于 Kotlin、Coroutines 和 Okio,并与 Google 的 R8 代码压缩器无缝协作。
    · 易于使用:Coil 的 API 利用 Kotlin 的语言功能来实现简单性和最少的样板。
    · 现代:Coil 优先使用 Kotlin,可与现代库(包括 Compose、Coroutines、Okio、OkHttp 和 Ktor)互作。
        Coil 是以下缩写词:Coroutine Image Loader。
    ---- 请使用如 Coil 等替代picasso等方案用于未来的项目,并开始规划迁移现有项目,尤其是那些依赖 Compose UI 的项目。
1. 官网    https://coil-kt.github.io/coil/
2. 使用和配置
    implementation("io.coil-kt.coil3:coil-compose:3.1.0")
    implementation("io.coil-kt.coil3:coil-network-okhttp:3.1.0")
 
二、picasso图片加载库      Square 公司还有其它开源库:Retrofit、OkHttp、Picasso

1. github网址:    https://github.com/square/picasso    此库已停止更新--最新适用compose的Coil库:
                                https://coil-kt.github.io/coil/
        https://gitcode.com/gh_mirrors/pic/picasso?utm_source=csdn_github_accelerator&isLogin=1
        官网:https://square.github.io/picasso/

2. 使用和配置:
    implementation 'com.squareup.picasso:picasso:2.8'
3. 优点:
    - 系统会自动检测适配器重用,并取消之前的下载
    在适配器中处理回收和下载取消。ImageView
    • 以最少的内存使用实现复杂的图像转换。
    • 自动内存和磁盘缓存

===============================================================================================
一、glide框架        功能/性能  表现突出,由Bump Technologies团队创建,现在由Google推荐并维护/专注于高效处理图像加载、缓存、和生命周期管理.
    -特点: GIF支持、缓存策略(多级缓存:内存+磁盘)、生命周期管理-自动绑定、默认图片格式(RGB_565-低内存占用)
    -适用场景:列表滑动-平滑加载/避免卡顿、动态内容展示、低内存设备优化(通过RGB_565格式减少内存消耗)
0.核心特性:
    - 高效缓存:  内存缓存:避免重复解码,提升加载速度、
             磁盘缓存:自动缓存原始图像和调整后的图像、
    - 生命周期集成:
        自动绑定Activity/Fragment生命周期,在页面销毁时停止请求,避免内存泄漏
    - 性能优化:
        · 智能奖采样(Downsamping):根据控件尺寸自动调整图片分辨率、减少内存占用
        · 资源复用:重用Bitmap和字节数组,降低垃圾回收频率.
1. 基本用法:
    - 加载网络图片:Glide.with(context).load(IMAGE_URL).into(imageView);
    - 占位符与错误处理:
        Glide.with(context).load(IMAGE_URL)
            .placeholder(R.drawable.placeholder)
            .error(R.drawable.error_image)
            .into(imageView);
    - 动态内容支持: 可加载GIF和视频缩略图,通过asGif()方法指定格式.

2. 配置与扩展
    - 依赖添加:  build.gradle中引入:
        implementation 'com.github.bumptech.glide:glide:4.12.0'
    - 权限设置
        网络加载需声明 INTERNET权限/ACCESS_NETWORK_STATE权限、本地存储需READ_EXTERNAL_STAORAGE权限
    - 自定义模块
        通过实现GlideModule接口,可调整缓存策略、图片格式等、

3.  glide样例使用详细
    https://blog.csdn.net/qq_35507234/article/details/89419793
      官网:https://bumptech.github.io/glide/doc/download-setup.html
    - RecyclerView 复杂列表集成库:    https://bumptech.github.io/glide/int/recyclerview.html
        - 配置:    implementation ("com.github.bumptech.glide:recyclerview-integration:4.14.2") {
                  // Excludes the support library because it's already included by Glide.
                  transitive = false
            }

4. 注解处理器
    annotationProcessor 'com.github.bumptech.glide:compiler:4.14.2'    - 可选依赖项        
    - annotationProcessor 用于指定注解处理器    纯java项目显示添加的方式、
    -kapt 'com.github.bumptech.glide:compiler:4.14.2'   && apply plugin: 'kotlin-kapt'
        - glide某个版本开始推荐 应用了 kotlin-kapt 插件的方式进行kotlin项目的glide注解处理器kapt方式.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值