在我的Ionic 2应用程序中,我使用此功能下载视频文件并跟踪其下载进度:
download()
{
this.progressbar=true;
this.downloadbutton=false;
this.fileTransfer.download('https://...videoURL....mp4', this.file.dataDirectory + 'path/to/downloads/test.mp4').then((entry) => {
console.log('download complete: ' + entry.toURL());
this.progressbar=false;
this.startbutton=true;
}, (error) => {
console.log('error');
console.log(error);
});
this.fileTransfer.onProgress(progressEvent => {
if (progressEvent.lengthComputable) {
console.log("### Download percentage ###: "+Math.round((progressEvent.loaded / progressEvent.total)*100));
this.setpercentage((progressEvent.loaded / progressEvent.total) * 100);
} else {
}
});
}
使用setpercentage
,我在页面上更新进度条
setpercentage(perc) {
this.loadProgress = Math.round(perc);
this.ref.detectChanges();
}
一切正常。当用户离开(返回)时,视图被破坏。视频一直在下载(应该如此),但是当我导航回页面时(视频仍然在下载时),进度条没有更新:值保持在0%。
即使视图被销毁,我怎样才能保持进度条更新?
基本上,我希望此page
具有与tab
相同的功能。当用户在不同选项卡之间导航时,会记住上一个选项卡的所有内容。
非常感谢任何帮助!
更新
以下是应用程序的工作原理:
当用户首次导航到该页面时,会出现一个按钮,其中显示"下载电影"。当用户点击它时,会调用download()
。 this.progressbar=true;
会显示进度条,而this.downloadbutton=false
会使下载按钮消失。下载完成后,进度条将消失(this.progressbar=false;
)和"播放电影"按钮出现(this.startbutton=true;
)。 问题是当用户点击下载按钮,然后导航并返回此页面时,似乎所有内容都已重置(虽然电影确实下载了),下载按钮是再次显示。
答案 0 :(得分:1)
当视图被销毁时,它会转到错误或完成您的可观察
this.fileTransfer.download('https://...videoURL....mp4',
this.file.dataDirectory + 'path/to/downloads/test.mp4').then((entry) => {
console.log('download complete: ' + entry.toURL());
this.progressbar=false;
this.startbutton=true;
}, (error) => {
this.progressbar=false; //////////////////////////////////
console.log('error');
console.log(error);
});
应在所有可能的操作中更改进度条的状态。
此外,视图被销毁时
实施ngOnDestroy()
生命周期钩子来处理相同的案例
ngOnDestroy(){
this.progressbar=false; ////////
}
更新1:
下载方法的语法如下
fileTransfer.download(
sourceURL,
targetURL,
successcallback,
errorCallBack,
trustAllHosts,
options)
source,target,successcallback,errorCallBack是必需参数
<强> Docs 强>
根据语法更新方法。