一.在app内做版本升级的几种方式:

1.是用应用内部使用的网络框架进行下载安装包

2.是调用系统的下载器进行下载

二.两种方式的优缺点比较:

1.框架下载:

优点:结合自己的需求,实现高度自由定制比如:监听下载进度,后台静默下载

缺点:下载速度慢,无法享用部分手机下载加速(如小米手机的迅雷加速)

实现代码:

2.下载器下载:

优点:可以享用手机系统下载器带来的便利,如小米手机的迅雷加速(速度很快)

缺点:无法监听下载进度(只能监听到下载任务是否完成,后面会优化),只要下载,通知栏会出现提示

实现代码:

三.下载器优化

前面优缺点比较的时候,说过了下载器是无法监听到下载进度的,只能监听到下载任务是否完成,基于上面的优缺点比较,我最初也是倾向于框架下载的,但是小米手机上的下载器下载有迅雷加速,那下载速度个人感觉体验很好,就因为不能监听下载进度而不考虑优点不甘,所以在不影响项目的进度的前提下,先实现了框架下载,作为备用,而后开始尝试下载器下载优化

通过代码可以看到,先创建了一个DownloadManager,给它传入我们要下载的安装包地址,然后紧接着构建状态栏展示的信息体以及文件下载路径,和进度监听的DownloadChangeObserver,

为了尽可能的节省手机资源,不提前浪费手机资源,所以我们已开始没有监听启动监听,我们已开始给它设置一个默认链接,当链接发生变化的时候,代表我们真正的下载业务开始了,所以在链接变化的时候,开始注册下载进度的监听,如下图:

由于我们上面的下载器监听已经创建并且注册了,那么,就来看看下载器的实现:

由于咱们的下载业务开始了,链接变化,所以会回调onChange方法,在这个方法里面,我们利用ScheduledExecutorService的定时功能,指定线程是progressRunnable,在这个子线程里面,我们可以做一些计算之类的耗时操作,

前面我downloadApk方法中,我们已经通过创建的系统下载器获取到了下载任务的id,所以,我们通过id可以定时查询下载任务的状态.看下图:

在子线程中计算好了这些数据,通过handler发送消息到主线程,然后通过接口回调,把我们需要的内容回调到下载页面,那么这样我们就实现下载器实时显示下载进度.

四 方案定型

经过上面的一番尝试下来,果断选择了下载器下载(毕竟天下武功,唯快不破,体验好!)

app应用内升级方案选型与优化相关推荐

  1. android app升级方案,App版本升级方案

    方案一:后端处理逻辑 - 通过指定数字版本号判断 app/ipad升级 入参数: appid app应用类型:1.A商城android app.2.A商城android ipad.3.A商城 ios ...

  2. 起点海外版 Hybrid App-内嵌页优化实践

    本文作者:刘文涛 原创声明:本文为阅文前端团队 YFE 成员出品,请尊重原创,转载请联系公众号 (id: yuewen_YFE) 获取授权,并注明作者.出处和链接. 今年年初我司开启了起点品牌的海外之 ...

  3. Android 系统级APP 升级方案 按键恢复出厂设置

    先敲黑板:(更多内容请关注专栏,支持原创) 概要:本文介绍内容有UBOOT BCB 系统级APP固化到固件 通过UBOOT完成按键触发恢复出厂设置,即恢复系统APP的方案 高质量文章导航 一.坐稳发车 ...

  4. 基于数字孪生的数字化车间升级方案

    本文根据数字化车间升级的理论与实践,具体阐述基于数字孪生运行模式的数字化车间 的升级方案与具体实现. 1    技术理论成果概述 1.1    数字孪生车间运行模式 世界各个制造大国提出的制造业国家战 ...

  5. PPTV Docker集群的网络方案选型

     原作者:李周     转载来源:http://dockone.io/article/1673 PPTV Docker集群的网络方案选型 作者介绍:李周,现PPTVDCOS技术主要负责人.专注于Doc ...

  6. APP弱网络条件下,体验优化之道

    APP弱网络条件下,体验优化之道 最近跟朋友聊天刚好聊到这一块,他们是在做电商业务,商品图片及其多,API接口请求频率也高.然而,他们在移动2/3G的网络环境下,APP经常会出现Loading很久的情 ...

  7. 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)

    更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,共同探讨软件知识经验,关注就有海量学习资料免费领哦: 目录 0背景 1.手机USB接口通信特点 1.1 使用方便 1.2 通用性强 1.3 ...

  8. iOS15 切换上架App图标的最新方案

    iOS15 切换上架App图标的最新方案 前言: Xcode13以及iOS15发布之前,Apple其实已经支持在应用内切换图标了,通过将不同的ICON图标打到包内,并手动配置,然后通过业务代码修改IC ...

  9. CH34X系列与CH91XX系列等USB转串口方案选型对比

    提供USB高速/全速转串口系列芯片,可实现USB转1/2/4/8路串口,支持串口I/O独立供电,支持VCP/HID/CDC/AOA转串口,VCP串口支持硬件流控和高波特率大数据连续传输,部分型号支持V ...

最新文章

  1. 时隔6年,“三巨头”再度联手,发布万字长文:深度学习将通往何方?
  2. 【emWin】例程二十五:窗口对象——Iconview
  3. apache camel_使用Apache Camel发布/订阅模式
  4. 天才编程女孩敲开支付宝大门!马云:有梦想的孩子了不起!
  5. BZOJ 4238 电压 解题报告
  6. 如何选用NAS、OSS和EBS
  7. html js关闭浏览器,js关闭页面(兼容浏览器)
  8. VulnHub的安全漏洞测试(1)
  9. 苹果电脑怎样清理DNS缓存?
  10. 深度学习与硬件GPU,软件框架关系及相关概念解析
  11. 双重差分模型能做固定效应吗_互助问答第213期:模型中的固定效应问题
  12. 1106 Lowest Price in Supply Chain(25 分)
  13. 使用谷歌学术找到引用某篇英文论文的中文文献
  14. html仿qq截图,截图工具(仿QQ截图,大致功能都已实现)
  15. Intellij Error:java: Compilation failed: internal java compiler error
  16. 防控青光眼的3大武器
  17. 小牛采购管理系统 v3.01 bt
  18. 使用Asponse.cells生成图片如何去掉水印
  19. simulink中MATLAB function模块数据维度不正确问题
  20. umi中使用plugin-initial-state插件(initialState)

热门文章

  1. 考研数学张宇:7月复习规划
  2. 【IT项目管理】第6章 习题
  3. TCS3200的使用
  4. 【二叉树进阶】红黑树(Red Black Tree) - 平衡二叉搜索树
  5. Linux学习---Linux入门
  6. rust第三人称视角插件_一个第三人称游戏相机的实现(基于rust语言和cgmath库)...
  7. fx3g485通讯模块_FX3G-485-BD用户手册三菱FX3G-485-BD数据通讯版手册 - 广州凌控
  8. iOS中GIF图片的加载
  9. 第三章:3.1 正交函数集合
  10. 进攻:设备动作流程(二)