老大要求下载更新的时候有个进度条,不能让用户一直在那等着,提高用户体验
其实很简单 ,但是写的过程中碰到了问题
直接贴代码
var downToak = plus.downloader.createDownload(downurl, { //拿到下载任务的对象
filename: '_doc/update/'
}, function(d, status) {
plus.nativeUI.closeWaiting();
if(status == 200) { //在回调中根据状态 进行操作
self.installWgt(d.filename);
} else {
app.alert("配置出错,请检查网络链接!");
}
});
downToak.start(); // 开启下载的任务
var prg = 0;
var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象
downToak.addEventListener("statechanged", function(task, status) { //给下载任务设置一个监听 并根据状态 做操作
switch(task.state) {
case 1:
showLoading.setTitle("正在下载");
break;
case 2:
showLoading.setTitle("已连接到服务器");
break;
case 3:
prg = parseInt(parseFloat(task.downloadedSize) / parseFloat(task.totalSize) * 100);
if(prg % 10 == 0) { // 让百分比 10% 增长,如果这里不这么处理 出现 堆栈内存溢出的问题,有知道原因的大神指导一下哈
showLoading.setTitle(" 已下载" + prg + "% ");
}
break;
case 4:
plus.nativeUI.closeWaiting();
break;
}
});
大体就是这样,但是做的过程中 在case 3的情况下,我之前是没有通过 showWaiting的对象去setTitle的 而是直接plus.nativeUI.showWaiting
这样也会导致堆栈内存溢出的问题,我分析是应为在case 3的情况 不停地 showWaitting 导致溢出 ,如图,到底是不是这个原因希望有知道的 大神 指导一下