java升级安卓_基于Retrofit2+RxJava2实现Android App自动更新

基于Retrofit2+RxJava2实现Android App自动更新

发布时间:2020-10-02 07:40:25

来源:脚本之家

阅读:156

作者:Ever69

本文实例为大家分享了Retrofit2 RxJava2实现Android App自动更新,具体内容如下

功能解析

自动更新可以说已经是App的标配了,很多第三方平台也都支持这个功能,最近手头上的项目需要加入这个App自动更新,考虑到项目里有用到Retrofit2和RxJava2,于是打算使用它俩自己实现这个功能。

分析App自动更新,可以分为以下三个功能点:

1.APK文件的下载

2.下载进度的实时更新显示

3.下载完成后的自动安装

其中比较难的一点是下载进度的实时更新显示,更难的是如何优雅的进行下载进度的更新显示,这也是为什么我用Retrofit2和RxJva2实现的原因。

用过Retrofit的人都知道他的内部是基于OkHttp实现的,OkHttp大家可能都不陌生,本次解决如何优雅的进行下载进度的更新显示的关键就在OkHttp的拦截器中,拦截器可谓是OKHttp的一大精髓,通过拦截器我们可以拿到Http的请求和响应信息,拿到了这些,你想干什么都行了。本次解决问题的核心就是在拦截器中拿到下载内容的长度并通过自定义的RxBus发送事件将下载信息发送出去,然后在合适的地方拿到这些下载信息,通过Notification实时展示下载进度。

先上一张App自动更新的流程图

caa1782833c1df5f51e391ed90b54369.png

功能实现

首先根据功能需求我创建了七个类:

1.ApiManager(Retrofit初始化和Api接口定义)

2.ApkLoadingBean(下载长度和文件总长度的数据类)

3.ApkResponseBody(自定义继承OKHttp的ResponseBody的类)重点4.RxBus(使用RxJava实现的‘EventBus')重点5.UpdateApkService(更新服务,在这里开启下载和订阅下载进度)重点6.UpdateHelper(检查更新、弹出更新对话框)

7.UpdateManager(调用ApiManager接口进行下载)

先讲一下OKHttp里对拦截器的操作,我们在拦截器里拿到请求到的响应,对响应信息进行一些封装并通过RxBus发送出去。接下来看重点代码。

ApkResponseBody:

public class ApkResponseBody extends ResponseBody {

private Response originalResponse;//原responsebody

public ApkResponseBody(Response originalResponse) {

this.originalResponse = or

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值