dongs
dongs
  • 发布:2016-07-29 08:43
  • 更新:2016-07-29 12:36
  • 阅读:2306

在线更新偶尔会卡在正在下载99%的状态,这有哪些可能的原因呢?

分类:HBuilder

原文链接:http://ask.dcloud.net.cn/question/21326

PS:为什么没有官方的人来回答该类问题。
还是就是DCLOUD到底有没有技术支持类的客服?
不得不吐槽,要解决个bug 发个问题等两天都没人回答。
这产品到底还能不能用了?

代码如下:

**  
 * 检查更新  
 */  
function UpdateVersion(wgtVer) {  
	var xhr = new XMLHttpRequest();  
	xhr.onreadystatechange = function() {  
		switch(xhr.readyState) {  
			case 4:  
				plus.nativeUI.closeWaiting();  
				if(xhr.status == 200) {  
					var newVer = xhr.responseText;  
					console.log("newVer:" + newVer);  
					if(wgtVer && newVer && (wgtVer != newVer)) {  
						mui.alert('发现新的资源更新包...', '资源更新', function() {  
							downWgt(); // 下载升级包  
						});  
					}  
				}  
				break;  
			default:  
				break;  
		}  
	}  
	var updateurl = getUpdatePath();  
	xhr.open('GET', updateurl);  
	xhr.send();  
};  
  
var downWgtWait = null;  
/**  
 * 下载更新资源  
 */  
function downWgt() {  
	var wgtUrl = getUpdateWgtPath();  
	var dtask = null;  
	downWgtWait = plus.nativeUI.showWaiting("下载更新文件...");  
	dtask = plus.downloader.createDownload(wgtUrl, {  
		filename: "_doc/update/"  
	}, function(d, status) {  
		if(status == 200 || d.state == 4) {  
			installWgt(d.filename); // 安装wgt包  
		} else {  
			plus.nativeUI.closeWaiting();  
			plus.nativeUI.alert("下载更新文件失败!");  
		}  
	})  
	dtask.addEventListener("statechanged", onStateChanged, false);  
	dtask.start();  
};  
  
var updatechangeno = 0;  
  
function onStateChanged(download, status) {  
	if(download.state == 3) {  
		if(updatechangeno == 0) {  
			updatechangeno = 1;  
			var current = '下载更新文件...' + parseInt(100 * download.downloadedSize / download.totalSize) + "%"  
			downWgtWait.setTitle(current);  
			setTimeout(function() {  
				updatechangeno = 0;  
			}, 1000);  
		}  
	}  
};  
/**  
 * 更新应用资源  
 * @param {Object} path  
 */  
function installWgt(path) {  
	downWgtWait.setTitle("安装更新文件...");  
	plus.runtime.install(path, {}, function() {  
		plus.nativeUI.closeWaiting();  
		plus.nativeUI.alert("应用资源更新完成!", function() {  
			plus.runtime.restart();  
		});  
	}, function(e) {  
		plus.nativeUI.closeWaiting();  
		plus.nativeUI.alert("安装更新文件文件失败[" + e.code + "]:" + e.message);  
	});  
};
2016-07-29 08:43 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

请提供一个可还原场景的完整工程,并提供一个下载任务所要下载的文件。

  • dongs (作者)

    已添加下载代码,请帮忙看一下!


    2016-07-29 14:28

  • Trust

    回复 dongs:好的,有结果会尽快回复。


    2016-07-29 14:35

  • Trust

    回复 dongs:请上传完整项目,这样没办法测试的。


    2016-07-29 14:37

  • dongs (作者)

    项目无法上传的,你可以使用mui的demo加入更新测试一下。原先的代码中是没有“d.state == 4”的,会不会是这个原因呢?


    2016-07-29 14:46

  • Trust

    回复 dongs:你是下载wgt会这样,还是下载所有的资源都会这样?


    2016-07-29 15:39

  • dongs (作者)

    回复 Trust:下载wgt。主要是大部分是好的。偶尔会卡在99%。本地测试网络突然中断的情况下,在网络恢复时会自动下载。就是不清楚99%卡的原因。


    2016-07-29 15:42

  • dongs (作者)

    回复 Trust:哥们,你那边测试ok吗?


    2016-08-01 08:24

  • Trust

    回复 dongs:我这边测试没有问题的。


    2016-08-01 09:40

  • dongs (作者)

    回复 Trust:好的,谢谢


    2016-08-01 09:46

该问题目前已经被锁定, 无法添加新回复