在开发uni-app自动下载最新版apk的功能中,使用plus.nativeUI.showWaiting()创建弹窗显示下载进度,遇到两个问题:

  1. waiting.setTitle("正在下载 - " + percent + "%") 中的percent数据有时不能正常显示,但是控制台打印这个数据可以正常输出;

  1. addEventListener()监听事件并没有返回状态4的情况,所以要自己判断何时执行plus.nativeUI.closeWaiting();

try {
// 开始下载
downloadTask.start()
//显示下载状态显示框
var waiting = plus.nativeUI.showWaiting("正在下载 - 0%", {
back: "none"
});
var pre_percent = 0;
//监听下载
downloadTask.addEventListener('statechanged', function(download, status) {
//显示loading和进度
switch (download.state) {
case 0:
//下载任务处于可调度下载状态
break;
case 1:
//下载任务建立网络连接,发送请求到服务器并等待服务器的响应
break;
case 2:
// 下载任务网络连接已建立,服务器返回响应,准备传输数据内容
break;
case 3:
// 下载任务接收数据,计算下载进度
let percent = parseInt(parseFloat(download.downloadedSize) / parseFloat(download
.totalSize) * 100)
//取整的情况下会出现同一个百分比出现多次的情况,每次都会执行waiting.setTitle()
//有时会出现percent无法正常显示的情况,可能是因为频繁执行waiting.setTitle()导致堆栈内存溢出的问题
//增加判断,当percent变化时才执行waiting.setTitle(),以减少函数执行次数,目测有效果
if (percent > pre_percent) {
waiting.setTitle("正在下载 - " + percent + "%");
pre_percent = percent
}
//经测试,并没有返回状态4,所以自行执行关闭弹窗代码
//当已经下载的文件大小等于总文件大小时,执行关闭
if (download.downloadedSize == download.totalSize) {
plus.nativeUI.closeWaiting();
}
break;
case 4:
// 下载任务已完成
plus.nativeUI.closeWaiting();
break;
}
})
} catch (err) {
plus.nativeUI.closeWaiting()
plus.nativeUI.toast("下载失败")
}

plus.nativeUI.showWaiting()实时进度无法正常显示相关推荐

  1. springboot:实现文件上传下载实时进度条功能【附带源码】

    0. 引言 记得刚入行的时候,做了一个文件上传的功能,因为上传时间较久,为了用户友好性,想要添加一个实时进度条,显示进度.奈何当时技术有限,查了许久也没用找到解决方案,最后不了了之. 近来偶然想到这个 ...

  2. vue获取上传进度_文件上传与读取实时进度展示-demo(Vue)

    监听进程的方法onprogress 1 )文件读取的progress事件属于FileReader对象. 2 )下载的progress事件属于XMLHttpRequest对象. 3 )上传的progre ...

  3. java web 进度条_教你制做Web实时进度条

    网上已经有很多Web进度条的例子,但是很多都是估算时间,不能正真反应任务的真实进度.我自己结合多线程和ShowModalDialog制做了一个实时进度条,原理很简单:使用线程开始长时间的任务,定义一个 ...

  4. html如何显示上传进度条,HTML5 Ajax文件上传进度条如何显示

    这篇文章主要介绍了HTML5 Ajax文件上传进度条是如何显示的,基于原生html5实现,不需要falsh支持,进度可以自定义显示,控制灵活,对HTML5上传进度条感兴趣的小伙伴们可以参考一下 原本打 ...

  5. matlab 进度条/waitbar 显示运行进度

    当运行大程序,需要跑大量数据的时候,使用进度条可以看到程序究竟运行到什么地方了,哈哈,要不干等着难受(╯﹏╰)-- waitbar的作用是打开或者更新进度条. 1 语法结构 (1.1) h = wai ...

  6. ajax 实时进度_【乐建工程宝】如何把控施工项目进度

    施工项目的进度.质量和成本是项目管理的"铁三角".其中,工程进度作为项目施工的重点控制之一,它是保证施工项目按期完成,合理安排资源供应.节约工程成本的重要措施之一. 今天乐小狮就来 ...

  7. html的canvas显示数字,HTML5效果:Canvas 实现圆形进度条并显示数字百分比

    实现效果 1.首先创建html代码 2.创建canvas环境 var canvas = document.getElementById('canvas'), //获取canvas元素 context ...

  8. Unity 最新UnityWebRequest下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享

    Unity 最新UnityWebRequest下载网络资源,支持断点续传.多文件同时下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享 显示网速图片 附上案例链接 可下载 https://do ...

  9. 【正点原子FPGA连载】第三十一章RTC实时时钟数码管显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

最新文章

  1. jupyter qtconsole 配置文件的生成和修改
  2. nginx 做负载均衡
  3. 微信实现定位城市并获取城市编码
  4. 用JavaFX编写图块引擎
  5. 特别困的学生(Extraordinarily Tired Students, ACM/ICPC Xi'an 2006, UVa12108)
  6. IOS学习之路十(仿人人滑动菜单Slide-out Sidebar Menu)
  7. 火狐浏览器国内版和国际版区别
  8. [转]DOS批处理高级教程精选合编
  9. Android SDK Platform Tools下载(包括adb 、 fastboot 和 systrace)
  10. 【合金装备xp热门主题】
  11. 【第十一篇】Flowable中的各种网关
  12. PDApp.log占用C盘几十G空间,原因及解决方案
  13. HTML中placeholder用法
  14. Objective-C 编程语言官网文档(一)-简介
  15. Kubernetes HPA测试
  16. 腾讯企业邮箱api java_腾讯企业邮全新API,五大新接口上线_腾讯企业邮箱服务中心...
  17. 解读scrapy各个组件中的from_crawler()方法
  18. 十六进制颜色值域RGB格式颜色值之间的相互转换
  19. [转]Linux学习路线
  20. rust服务器配置文件,使用Rust编写一个简单的Socket服务器(1):Rust下的配置载入...

热门文章

  1. 表的记录查询(基础sql语句)
  2. 武大计算机系自招,武汉大学自主招生考试模式及武大2017自招考试试题
  3. 整合Tkinter GUI界面的古诗词词云生成
  4. Faster RNN
  5. c语言在线阅读源代码,C语言-源代码详细资料.doc
  6. Unity游戏开发之UGUI设计——制作一个游戏内置的控制台界面/作弊菜单(详细流程,附代码)
  7. 使用手环代替NFC标签实现多屏协同
  8. linux vim界面命令大全,vim命令大全
  9. 计算机中时钟符号在哪,汽车的仪表盘出现了一个时钟的标志,这是代表什么意思呢?请各位大神解救…...
  10. 日常用的管理脚本,陆续更新中...