android简单实现从网络下载文件到手机sd卡

首先,要明确这个程序大概的流程:

1:从Activity中创建要下载的文件实体信息,然后传入到service中进行下载,在service中是主线程,必须另外开启子线程进行下载。

2:将在子线程中下载的时候将下载的进度传回到activity中进行更新ui

一:先讲解MainActivity


初始化界面控件,然后添加相应的点击事件,stop按钮的逻辑暂未实现

首先创建了一个FileInfo实体,然后初始化他,然后把他存在intent,启动DownloadService,将他传递到service进行下载

定义的FileInfo实体:


FIleInfo定义了filename文件的名字   url要下载的问价的链接,length要下载的文件的长度。实现了Serializable接口,这样fileinfo实体就可以通过intent进行传递了。


DownloadService,首先在onStartCommand中进行接受传递来的intent,得到传过来的fileinfo实体,然后启动下载的子线程进行下载。



讲解下下载的子线程,

实现的run方法,首先是得到要下载fileinfo的url,然后打开链接,然后设置conn的请求方式和事件延迟,然后得到conn的长度,如果链接正常,得到inputstream,然后就是将网络的数据写入到本地,显示在本地创建一个目录,然后是创建要写入的文件。最后通过随机写入流进行文件的写入。设置随机写入流的长度,设置buffer缓冲区,通过while循环对文件进行写入。

然后是ui界面更新,设置lengthd,将每次下载的长度累加然后通过发送广播的方式传回到activity中进行ui的更新。为了让更新不至于太快,在while中设置每过500ms进行一次发送广播。  







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值