多线程下载更新包并显示进度条

问题描述:针对安卓和pc平台上支持断点续传下载更新包并显示进度条的解决方案


原因分析 :uniyu项目中,在下载更新包时需要不断从服务器上获取更新包的文件数据,并写入到本地文件中,为了提高用户体验以及合理性,应该支持断点续传,且可实时显示进度


解决方案编辑本段回目录在链接服务器获取版本号时,若有更新包则根据下发的版本号(如:3.1.2)下载服务器上对应的更新包(例如:http://100.100.100/3_1_2.zip),下载过程中实时写入本地文件(安装包目录/3.1.2.tmp),下载完成后将3.1.2.tmp后缀名改为3.1.2.zip,并调用ICSharpCode.SharpZipLib.dll解压zip覆盖本地文件及文件夹实现更新。解压完成后调用System.IO.File.Delete(zipFile);删除安装包。(启动游戏时应检测安装包目录下是否有zip文件,有则解压,防止解压一半程序退出)




关于断点续传:


在下载包时新建一个线程用于下载安装包,例如需要下载的版本号为3.1.2,先检测本地安装包目录下是否存在3_1_2.tmp,有的话则获取该.tmp文件的大小,从.tmp文件大小处请求服务器安装包数据。不存在的话则从头开始请求数据。由于下载的临时文件名为.tmp,在下载完成之后才会改后缀名为.zip,所以可以用于断点续传。


 


            FileStream fs;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值