文件下载---解决方案---类似360同步客户端

需求:

在某个文件管理Activity中,点击某个Item,就下载文件;

点击所有Item,将所有Item所对应的文件,逐个下载。

某个文件在下载时,界面要不断显示出下载进度。

服务器的文件和本地的文件是使用同一个目录,根360的同步客户端类似。

要注意的地方:

1.正在下载某个文件,但是该Activity销毁了。此时要中断文件的下载操作。

2.再次进入该文件管理Activity时,要判断出某个文件是否是有效的。

我的实现思路是这样:

文件管理Activity;文件下载DownloadLooper线程;本地文件大小检测DetectSizeLooper线程;

一个数据表FileInofoTable。

需要这个四个部分相互协作来完成功能。

具体思路:

1.进入文件管理Activity的时候,检测FileInfoTable是否存在,如果没有存在则创建该数据表。

2.在检测某个文件是否有效的时候,利用服务器传递过来的Item,检查本地是否存在该文件,如果存在,利用Item对象中字段序号值(唯一标识一个文件)去查FileInfoTable,判定该本地存放的文件是否是有效的。如果有效,则无需下载;如果无效,则删除。

----------点击单个文件,进行下载的实现流程------------------------------------------

0.启动一个DownloadLooper线程。

1.获取该Item,发送下载请求信息给DownloadLooper线程。DownloadLooper线程根据信息类型,执行下载操作。

2.DownloadLooper线程,在开启下载后,在接收到要下载的文件大小后,发送信息给DetectSizeLooper

线程;并且。DetectSizedLooper不断检测本地文件的大小,对比要下载的文件大小,并且不断发出更新信息给文件管理Activity,让它更新文件下载进度。

3.在DownloadLooper线程要结束之前,检测当地的文件大小,和要下载的文件大小,文件的序号,写到FileInfoTable中。----没有下载完毕,也保存。

4.当文件管理Activity,发现,本地文件大小和要下载的文件大小相等时,就发送两个消息,让DetectSizeLooper和DownloadLooper线程停止;并且将文件信息保存到FileInfoTable。

其它情况:

1).Activity,系统调用onDestroy方法时,发送两个消息给DetectSizeLooper和DownloadLooper线程,让它们停止。

----------点击单个文件,进行下载的实现流程------------------------------------------

---------当多个文件被选中,多个文件要下载时--------------------------------------------

0.启动一个DownloadLooper线程。

1.启动一个DetectSizeLooper线程。

2.维护一个下载队列,将所有待下载的Item都放到该队列中。

3.获取该Item,发送下载请求信息给DownloadLooper线程。DownloadLooper线程根据信息类型,执行下载操作。

4.DownloadLooper线程,在开启下载后,在接收到要下载的文件大小后,发送信息给DetectSizeLooper

线程;并且。DetectSizedLooper不断检测本地文件的大小,对比要下载的文件大小,并且不断发出更新信息给文件管理Activity,让它更新文件下载进度。

5.在DownloadLooper线程要结束之前,检测当地的文件大小,和要下载的文件大小,文件的序号,写到FileInfoTable中。----没有下载完毕,也保存。


6.文件管理Activity,接收到某个文件下载完毕的消息时,对比本地文件大小和要下载的文件大小,是否相等,若是,则保存信息到FileInfotable中,并且将当前Item从下载队列中移除,取出一个新的Item,再次重复上述过程;若已经没有可以取得队列,则发送消息,停止DownloadLooper线程和DetectSizeLooper线程。

其它情况:

1).Activity,系统调用onDestroy方法时,发送两个消息给DetectSizeLooper和DownloadLooper线程,让它们停止。

---------当多个文件被选中,多个文件要下载时--------------------------------------------

文件下载---解决方案---类似360同步客户端,布布扣,bubuko.com

时间: 2024-11-03 20:53:16

文件下载---解决方案---类似360同步客户端的相关文章

自己的作品界面---类似360杀毒软件的界面

自己的作品界面---类似360杀毒软件的界面 软件界面,虽然有点丑,对比起我做的第一个几近黑白的界面来说,已经进步很大了(这是第二个).刚说要做界面的时候,我有种被雷击中的感觉,用java蛮久了,从来没做过界面.唯一做过界面的语言是vb,人家是直接拖控件就好了.java的界面,好像没法脱控件.找了个资料,是仿360的,给了代码,但是没有给图片.开始蛮高兴的额,直接考下来了.后面运行加看代码才发现,没有图片,简直就是不可能运行.一直都不想动,就一直拖着.后面拖到离交作品还有一周了,实在拖不下去了,

360同步盘把文件同步下来,结果反而把我云盘里的一大堆文件给同步没了

360你可以收费,但是别说关就关啊,什么监管涉黄爆,你以为就你一家网盘吗,百度黄爆不比你少,别人怎么还能搞.这是什么借口. 真的,你要是烧不起了可以收费,我在115都买了几年的vip券了.我相信很多人都愿意花钱.你不免费也比现在这样强啊. 有一次我硬盘坏了,买了个新硬盘,想在新硬盘上用360同步盘把文件同步下来,结果反而把我云盘里的一大堆文件给同步没了,很多资料都没了.自从这次被坑了以后,我再也不敢大意,每次都手动同步,同步完成马上关掉.而且每过几天就同步一次,在这次公告出来前才同步过一次.好险

vs2010 怎样设置文本编辑窗口和解决方案资源管理器同步?

即切换左边的文本编辑窗口,解决方案资源管理器如何定位到相应的文件项上?答案: 工具--选项--项目和解决方案--常规--在解决方案资源管理器中跟踪活动项(前打勾)确定 应该就可以了. vs2010 怎样设置文本编辑窗口和解决方案资源管理器同步?

android 类似360悬浮窗口实现源码

当我们在手机上安装360安全卫士时,手机屏幕上时刻都会出现一个小浮动窗口,点击该浮动窗口可跳转到安全卫士的操作界面,而且该浮动窗口不受其他activity的覆盖影响仍然可见(多米音乐也有相关的和主界面交互的悬浮小窗口).它能悬浮在手机桌面,且不受Activity界面的影响,说明该悬浮窗口是不隶属于Activity界面的,也就是说,他是隶属于启动它的应用程序所在进程.如360App所在的应用进程,当杀掉它所在的应用进程时,它才会消失.悬浮窗口的实现涉及到WindowManager(基于4.0源码分

类似京东商城客户端应用源码

IOS商城,电商开源APP,类似京东商城,天猫商城,淘宝,去年开发的一个项目,现在把它分享出来.服务端是java 商城,对应项目是Shop-for-JavaWeb1.App使用MVC框架完成开发.2.使用CocoaPods引入各大第三方组件:pod 'Masonry', '~> 0.6.4'pod 'AFNetworking', '~> 2.6.3'pod 'TouchJSON', '~> 1.1'pod 'SDWebImage', '~> 3.7.1'pod 'FMDB', '~

[译]httpie: CLI, 类似cURL的客户端

5 Request URL HTTPie执行请求,唯一需要指定的信息是URL.默认的scheme,不出意外的,http://,是可以忽略的,http example.org 也是可以的. 此外,像curl一样的速记方式也是支持的.比如:3000也就是http://localhost:3000 如果忽略了端口,默认使用80 $ http :/foo GET /foo HTTP/1.1 Host: localhost $ http :3000/bar GET /bar HTTP/1.1 Host:

配置hooks使svn提交后自动同步客户端代码(客户端与服务端在同一台机器上)

1.配置svn的hooks 2.实例演示 1.配置svn的hooks 1.1)配置情况 承接上篇svn搭建的文章,今次继续使用上篇文章的配置 上篇文章的地址:http://www.cnblogs.com/fengbohello/p/4548580.html svn仓库所在的目录为/opt/svn/firsttest 1.2)修改hooks文件post-commit 我们的任务需求是:当firsttest代码仓库有任何人提交了代码之后,本机器上的某个位置的副本就需要立刻进行svn up操作,这样达

[db2数据库数据同步解决方案]db2数据库同步

db2look-dpayment-a-e-x-0cre_stp.sql db2-tvfcre_stp.sql db2look-i指定用户-w指定密码 2 db2move导出数据文件 db2moveexport db2move导出数据 db2moveimport truncatetable删除表中的所有行 要将数据倒入一个指定的schema的中需要修改 导入数据文件中的db2move.lst文件将里面的shema该改为需要导入数据的shema 3 导出一个指定schema的数据 db2moveoc

Outlook客户端无法发送附件,频繁与Exchange服务器断开现象解决方案

现象描述: outlook exchange模式,部分用户发送文字邮件频繁与服务器断开,发送含附件邮件不能发出, 部分用户有此问题,部分用户正常. 解决方案: 此问题是客户端问题,并非服务器问题. 可以通过修盖客户端注册表来解决. 如下: 打开注册表regedit: 定位至如下路径:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters] 修改: "TcpMaxDataRetransmissions"