Android NDK开发详解连接性之Cronet 请求生命周期

Android NDK开发详解连接性之Cronet 请求生命周期

本文介绍了使用 Cronet 库创建的请求的生命周期,以及如何使用该库提供的回调方法管理此类请求。

生命周期概览

使用 Cronet 库创建的网络请求由 UrlRequest 类表示。以下概念对于理解 UrlRequest 生命周期至关重要:

状态
状态是请求在特定时间所处的特定状况。使用 Cronet 库创建的 UrlRequest 对象在其生命周期中会经历不同的状态。请求生命周期包括初始状态以及多个过渡状态和最终状态。
UrlRequest 方法
客户端可以根据 UrlRequest 对象的状态对其调用特定的方法。方法会将请求从一种状态转换为另一种状态。
Callback 方法
通过实现 UrlRequest.Callback 类的方法,您的应用可以接收有关请求进度的动态更新。您可以实现多种回调方法,从而调用 UrlRequest 对象的方法,将生命周期从一种状态转换为另一种状态。

以下列表介绍了 UrlRequest 生命周期的流程:

应用调用 start() 方法后,生命周期处于已开始状态。
服务器可能会发送重定向响应,该响应会将流程引导至 onRedirectReceived() 方法。在此方法中,您可以执行以下任一客户端操作:
    使用 followRedirect() 跟踪重定向。此方法会将请求恢复为已开始状态。
    使用 cancel() 取消请求。此方法会将请求引导至 onCanceled() 方法,借助该方法,应用可以在请求转换为已取消这一最终状态之前执行其他操作。
应用跟踪所有重定向后,服务器会发送响应标头,还会调用 onResponseStarted() 方法。请求处于 Waiting for read() 状态。应用应该会调用 read() 方法来尝试读取部分响应正文。调用 read() 之后,请求处于正在读取状态,并可能出现以下结果:
    读取操作已成功完成,但还存在更多可用数据。已调用 onReadCompleted(),且请求再次处于 Waiting for read() 状态。应用应再次调用 read() 方法,以继续读取响应正文。应用还可以使用 cancel() 方法停止读取请求。
    读取操作已成功完成,没有其他可用数据。已调用 onSucceeded() 方法,请求现在处于成功这一最终状态。
    读取操作失败。已调用 onFailed 方法,请求的最终状态为失败。

下图展示了 UrlRequest 对象的生命周期:

在这里插入图片描述

将 Cronet 和其他库一起使用

Cronet 是一款强大且灵活的工具,可以与其他库结合使用,具有最佳的实用性、简洁性和性能。
ExoPlayer

ExoPlayer 通过其 Cronet 扩展程序原生支持 Cronet。一些全球最大的在线播放应用都在使用 Cronet,其中包括 YouTube。

如需了解详情,请访问 ExoPlayer 网站。
gRPC

Cronet 可用作 Android 上 gRPC 的传输层。这样,您的 Android 应用就可以使用与 Chrome 浏览器所用的网络堆栈相同的网络堆栈创建 RPC。

如需了解详情,请访问 gRPC 代码库。
OkHttp

Cronet 团队提供了一个库,可让 OkHttp 用户将 Cronet 用作其传输层,从而受益于 QUIC/HTTP3 支持或连接迁移等功能。该库也可与其他基于 OkHttp 的库(例如 Retrofit、Coil 和 others)结合使用。

如需了解详情,请访问适用于 OkHttp 的 Cronet 传输代码库。
Glide

Cronet 是 Glide 的不错的默认选择,与 Glide 与标准 Android 网络堆栈的默认集成相比,Cronet 可提供更好的性能。

如需了解详情,请访问 Glide 网站。
Dart

可以在 Dart 中使用 Cronet 来直接替代 dart:io 软件包。

如需了解详情,请访问 Cronet Dart 绑定代码库,并阅读博文,了解其诞生的意义!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五一编程

程序之路有我与你同行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值