推荐使用ProgressManager:优雅地实现全局网络进度监听

推荐使用ProgressManager:优雅地实现全局网络进度监听

在网络传输越来越频繁的今天,无论是下载文件还是上传数据,用户都希望实时了解进度以便做出相应操作。这就催生了ProgressManager——一个轻量级且强大的Android框架,它能帮助开发者轻松地监听应用中所有网络链接的下载与上传进度,甚至包括Glide的图片加载进度。

项目介绍

ProgressManager 是由 JessYan 创建的开源项目,它通过简单的接口设计,实现了全网请求的进度监听。无论是在OkHttp、Retrofit还是Glide中,你都可以轻松接入,并实现对每个请求的进度跟踪。特别的是,即使在URL重定向的情况下,ProgressManager依然能够准确无误地提供进度信息。

项目技术分析

ProgressManager的设计理念类似于EventBus,但它的主要任务是管理请求监听器。通过Url地址作为唯一标识,你可以在一个或多个地方注册监听器,并在特定Url发起请求时,自动触发对应的监听器。这种解耦合的设计使得你能灵活地在App各处获取并更新进度,无需关心请求的具体实现细节。

框架的核心功能是添加响应和请求监听器:

  • addResponseListener() 用于监听下载进度。
  • addRequestListener() 用于监听上传进度。

在OkHttpClient构建过程中,只需通过ProgressManager实例进行初始化配置,就能轻松启用进度监听功能。

此外,ProgressManager还支持多文件上传,并默认在主线程运行,避免了额外处理线程的问题。

项目及技术应用场景

  • 在文件下载界面,实时显示当前下载进度,提升用户体验。
  • 图片加载过程中,展示预估剩余时间,让用户知道何时可以浏览完整图片。
  • 对于批量上传文件的应用,比如社交软件,能直观提示用户哪些文件已上传完成。
  • 在后台服务中监控网络流量,以便优化网络资源的使用。

项目特点

  1. 简洁易用:只需要一行代码,就能开启进度监听。
  2. 多平台支持:适用于Okhttp、Retrofit和Glide等主流库。
  3. 低耦合、高扩展:不需要修改原有网络请求代码,易于集成。
  4. 多端同步:同一请求可绑定多个监听器,实现多个模块间的同步更新。
  5. 智能管理:自动管理监听器,无需手动注销。
  6. 主队列执行:默认在主线程执行,无需考虑线程同步问题。
  7. 轻量级:不依赖其他第三方库,体积小巧。

获取与使用

要使用ProgressManager,只需在你的项目中添加以下Gradle依赖:

implementation 'me.jessyan:progressmanager:1.5.0'

然后按照项目提供的Usage指南,进行简单配置和监听器添加,就可以开始享受全局进度监听带来的便利。

如果你对该项目感兴趣,想要了解更多详细信息或遇到问题,可以通过作者的联系方式进行交流,也可以访问项目主页和GitHub仓库查阅源码。

不要错过这个提升你的应用体验的机会,让ProgressManager成为你的得力助手吧!

项目主页 GitHub仓库

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
IntroductionProgressManager 一行代码即可监听 App 中所有网络链接的上传以及下载进度,包括 Glide 的图片加载进度,实现原理类似 EventBus,你可在 App 中的任何地方,将多个监听器,以 Url 地址作为标识符,注册到本框架,当此 Url 地址存在下载或者上传的动作时,框架会主动调用所有使用此 Url 地址注册过的监听器,达到多个模块的同步更新.框架的构思和实现可以看这篇文章Feature使用简单,只需一行代码即可实现进度监听.多平台支持,支持 Okhttp , Retrofit , Glide ,使用 Okhttp 原生 Api ,不存在兼容问题.低耦合,实际请求端和进度接收端并不存在直接或间接的关联关系,即可以在 App 任何地方接收进度信息.侵入性低,使用本框架你并不需要更改之前进行上传或下载的代码,即使用或不使用本框架并不会影响到原有的代码.多端同步,同一个数据源的上传或下载进度可以指定多个不同的接收端,少去了使用 EventBus 实现多个端口同步更新进度.自动管理监听器,少去了手动注销监听器的烦恼.默认运行在主线层,少去了切换线程的烦恼.轻量级框架,不包含任何三方库,体积极小.Download compile 'me.jessyan:progressmanager:1.2.5'UsageStep 1 // 构建 OkHttpClient 时,将 OkHttpClient.Builder() 传入 with() 方法,进行初始化配置  OkHttpClient = ProgressManager.getInstance().with(new OkHttpClient.Builder())                 .build();Step 2 // Glide 下载监听  ProgressManager.getInstance().addResponseListener(IMAGE_URL, getGlideListener()); // Okhttp/Retofit 下载监听  ProgressManager.getInstance().addResponseListener(DOWNLOAD_URL, getDownloadListener()); // Okhttp/Retofit 上传监听  ProgressManager.getInstance().addRequestLisenter(UPLOAD_URL, getUploadListener());ProGuard -keep class me.jessyan.progressmanager.** { *; }  -keep interface me.jessyan.progressmanager.** { *; }About MeEmail: jess.yan.effort@gmail.comHome: http://jessyan.me掘金: https://gold.xitu.io/user/57a9dbd9165abd0061714613简书: http://www.jianshu.com/u/1d0c0bc634db

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

孔旭澜Renata

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值