起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2071|回复: 8

[结贴] 关于下载进度保存的问题

[复制链接]

69

主题

320

帖子

658

积分

高级会员

Rank: 4

积分
658
QQ
发表于 2017-12-15 14:54:01 | 显示全部楼层 |阅读模式
本帖最后由 开发者001 于 2017-12-15 14:55 编辑

1 我做了一个下载视频的功能。用户一次可以下载好多个视频
2 用户第一次访问下载页面。并且开始下载。页面显示下载进度。
3 用户退出下载页面。然后再次访问。下载进度不显示。

整机调试,发现下载进度一直在变。

使用的方法:
1 把下载进度保存到当前data中。并且每次提交到sqlite中。如果页面的视频超过两个。页面将会什么都显示不出来。除非两个视频全部都下载完了。
2 如果只把下载进度保存到data中。不提交sqlite。  第二次访问下载进度消失

问题:
请问类似的功能。怎么样才能吧下载进度对应保存。下一次访问的时候直接获取呢

代码
var isdown=downdata.find(["fId"], [fbId], true, true, true)[0];
                var fileTransfer = new FileTransfer();
                fileTransfer.onprogress = function(progressEvent) { //文件传输插件对象的进度方法调用
                        var percentProgress = parseInt((progressEvent.loaded / progressEvent.total) * 100)+ "%"; //获取已下载和总大小的百分比
                        debugger;
                        //保存要下载视频的data
                        downdata.setValue("fJingDu", percentProgress, isdown);
                        //me.downloadDataCustomSave(downdata);
                        
                        console.log("onprogress:"+JSON.stringify(progressEvent));
                        console.log("jingdu" + percentProgress);
                        console.log("fid:"+isdown.val("fId"));

                };
               

QQ图片20171215140055.jpg
QQ图片20171215140059.jpg
发表于 2017-12-15 16:15:11 | 显示全部楼层
你是支持断点续传的吗??如果支持,就在sqlite  一个字段中存储上就行!!  list显示的时候绑定字段直接显示就可以!

如果不支持断点续传!重新下载,应该就从头开始才对吧!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

69

主题

320

帖子

658

积分

高级会员

Rank: 4

积分
658
QQ
 楼主| 发表于 2017-12-15 17:39:39 | 显示全部楼层
liangyongfei 发表于 2017-12-15 16:15
你是支持断点续传的吗??如果支持,就在sqlite  一个字段中存储上就行!!  list显示的时候绑定字段直接显 ...

对的我每次都会获取进度保存到sqlite中的一个字段。但是我再一次进这个页面的时候。list什么都显示不出来。我怀疑是因为一边保存一边显示所以App反应不过来。
但是这个时候我真机调试了。依然在下载。进度依然在更新
我把进度放到另外一个表中。依旧是什么都出不来。
回复 支持 反对

使用道具 举报

发表于 2017-12-15 18:07:09 | 显示全部楼层
开发者001 发表于 2017-12-15 17:39
对的我每次都会获取进度保存到sqlite中的一个字段。但是我再一次进这个页面的时候。list什么都显示不出来 ...

你是同步请求还是异步请求呢??你的代码有没有同步执行代码??
如果有同步执行的代码。就会导致问题! 浏览器不渲染!! 只有异步执行下载才能试试渲染的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

69

主题

320

帖子

658

积分

高级会员

Rank: 4

积分
658
QQ
 楼主| 发表于 2017-12-15 18:11:52 | 显示全部楼层
本帖最后由 开发者001 于 2017-12-18 09:20 编辑
liangyongfei 发表于 2017-12-15 18:07
你是同步请求还是异步请求呢??你的代码有没有同步执行代码??
如果有同步执行的代码。就会导致问题!  ...

异步执行的。这个是我的源码。麻烦您帮我看一下吧

20171214.rar

50.99 KB, 下载次数: 155

回复 支持 反对

使用道具 举报

发表于 2017-12-18 09:19:13 | 显示全部楼层
开发者001 发表于 2017-12-15 18:11
异步执行的。这个是我的源码。麻烦您帮我看一下吧

进度条的问题可以参考下
http://bbs.wex5.com/thread-88234-1-1.html

你试试调用下载的方法之前,先调用list.refrehs()  list显示数据以后再执行下载的方法!     有可能list渲染慢 !
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

69

主题

320

帖子

658

积分

高级会员

Rank: 4

积分
658
QQ
 楼主| 发表于 2017-12-18 18:18:51 | 显示全部楼层
liangyongfei 发表于 2017-12-18 09:19
进度条的问题可以参考下
http://bbs.wex5.com/thread-88234-1-1.html

已解决可以结帖了
回复 支持 反对

使用道具 举报

发表于 2017-12-19 09:31:09 | 显示全部楼层

问题解决后,欢迎分享下原因,方便参考!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

69

主题

320

帖子

658

积分

高级会员

Rank: 4

积分
658
QQ
 楼主| 发表于 2017-12-19 10:48:40 | 显示全部楼层
liangyongfei 发表于 2017-12-19 09:31
问题解决后,欢迎分享下原因,方便参考!

1 在建sqlite表的时候 建一个字段存放下载进度
2 在文件下载的时候  将下载的进度保存到localStorage 里面。并且同时也要保存在含有下载信息的data中。不要提交到sqlite中。因为下载的视频一旦多了。整个页面就会卡死。目的是渲染当前下载进度。
              fileTransfer.onprogress = function(progressEvent) { //文件传输插件对象的进度方法调用
                        var percentProgress = parseInt((progressEvent.loaded / progressEvent.total) * 100)+ "%"; //获取已下载和总大小的百分比
                       
                        //保存要下载视频的data
                        downdata.setValue("fJingDu", percentProgress, isdown);
                        localStorage.setItem("video"+fbId, percentProgress);
                       

                        console.log("jingdu" + percentProgress);
                        console.log("fid:"+isdown.val("fId"));

                };


3 当前页面退出的时候用:history.back(); 确保当前页面关闭了。但是下载的代码还在执行,也就是下载进度的方法也在执行。
4 再次进入当前页面,要从localStorage取出下载进度放到含有下载信息的data中。
注:此方法写在list的onAfterRender中 等list中数据加载了再显示进度
5 因为第二次进入当前页面。data只能渲染一次。所以页面的进度是静止的。这个时候可以放一个timer控件。每隔一秒渲染一次。

提示:如果不确定进度是否会实时保存到localStorage 可以真机调试。用console.log 输出一下。


以上是我的实现思路。没有用进度条。只是显示了一个简单的进度值。
个人觉得思路繁琐。大家要是有更好的解决方法希望可以指导一二。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-28 00:12 , Processed in 0.058630 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表