android 多线程下载思路
首先请求下载url,获取文件大小和文件类型
比如获取到文件大小是7410642 文件类型为application/vnd.android.package-archive(即后缀为apk,安卓app安装包)
比如使用三线程下载
long totalSize = 7410642;
final int sSize = (int)(totalSize / 3);//前两个任务大小都是2470214
int eZize = (int)(totalSize - (sSize * 2));//最后一个任务大小2470214 则三个任务请求range分别是
Range=bytes=0-2470213
Range=bytes=2470214-4940427
Range=bytes=4940428-7410641
由于这里的区间是索引下标。所以是0-7410641
三个请求不能有重合 下面这种情况是错误的,下载完成后合并会出现问题(我做的时候时候就出现这种情况了。折腾了好几天没有解决。突然发现区间重合了,这里主要警示自己不要弄错了)
Range=bytes=0-2470213
Range=bytes=2470213-4940427
Range=bytes=4940427-7410641
开启一个线程,检测三个文件的下载情况。检测到下载完成后,合并下载文件
下载后三个文件,比如是1.apk,2.apk,3.apk
File file = new File("完整.apk");
String path = file.getAbsolutePath();
FileOutputStream fos = new FileOutputStream(file);
byte[] bs = new byte[4096];
for(int i=1;i<=3;i++){
         File f1 = new File(i+".apk");
         FileInputStream fis = new FileInputStream(f1);
         int l = -1;
         while ((l=fis.read(bs)) != -1){
             fos.write(bs,0,l);
         }
         fos.flush();
         fis.close();
         f1.delete();//合并后删除下载文件
}
fos.close();
android 多线程下载思路的更多相关文章
- android程序---->android多线程下载(一)
		
多线程下载是加快下载速度的一种方式,通过开启多个线程去执行一个任务,可以使任务的执行速度变快.多线程的任务下载时常都会使用得到断点续传下载,就是我们在一次下载未结束时退出下载,第二次下载时会接着第一次 ...
 - android程序---->android多线程下载(二)
		
上篇我们讲到了android中下载的断点续传问题,今天我们开始学习下载的多线程问题.本次的多线程源码下载:androdi中多线程下载的实现代码.有关断点续传的问题,请参见博客:android程序--- ...
 - 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)
		
1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...
 - Andoid 更好的Android多线程下载框架
		
概述 为什么是更好的Android多线程下载框架呢,原因你懂的,广告法嘛! 本篇我们我们就来聊聊多线程下载框架,先聊聊我们框架的特点: 多线程 多任务 断点续传 支持大文件 可以自定义下载数据库 高度 ...
 - 更好的Android多线程下载框架
		
/** * 作者:Pich * 原文链接:http://me.woblog.cn/ * QQ群:129961195 * Github:https://github.com/lifengsofts */ ...
 - android 多线程下载 断点续传
		
来源:网易云课堂Android极客班第八次作业练习 练习内容: 多线程 asyncTask handler 多线程下载的原理 首先获取到目标文件的大小,然后在磁盘上申请一块空间用于保存目标文件,接着把 ...
 - *Android 多线程下载 仿下载助手
		
今天带来一个多线程下载的 样例.先看一下效果.点击 下载 開始下载,同一时候显示下载进度.完成下载,变成程 安装,点击安装 提示 安装应用. 界面效果 线程池 ThreadPoolExecutor , ...
 - Android多线程下载大文件解析
		
1.多线程介绍 用过迅雷的同学都知道.迅雷有个功能叫做多线程.另一个叫离线下载,我们这里重点介绍一下多线程下载.多线程,顾名思义就是非常多歌线程同一时候在执行,为什么要提出多线程这个概念呢?由于有时候 ...
 - *Android 多线程下载 仿下载助手(改进版)
		
首先声明一点: 这里的多线程下载 并非指的 多个线程下载一个 文件.而是 每一个线程 负责一个文件. 真正的多线程 希望后面能给大家带来. ------------- 欢迎 爱学习的小伙伴 加群 ...
 
随机推荐
- ThinkPHP 静态页缓存
			
通过对ThinkPHP的学习,记录下静态页的缓存步骤,以便以后查阅: 1.配置配置文件/Admin/Conf/config.php代码如下: /*静态缓存*/ 'HTML_CACHE_ON'=> ...
 - [shell] Bash编程总结
			
由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进 ...
 - 操作系统:使用AT&T实现引导扇区
			
参考学习于渊的书箱时,里面都是用nasm来写的,而自己更熟悉和使用AT&T的语法,心想用AT&T来实现一下,这个过程是十分漫长与痛苦的,但也收获颇丰. 1. 引导扇区代码 .code1 ...
 - bzoj4474: [Jsoi2015]isomorphism
			
树hash啊 我的做法很垃圾,就是yy一种只有一个孩子时hash值和孩子一样的hash法 然后用重心去作为根遍历 这样有点问题,就是重心假如也是要删掉的那就gg了 那我们求tot的时候删掉的点就不管直 ...
 - python之yield和Generator
			
首先我们从一个小程序导入,各定一个list,找出其中的素数,我们会这样写 import math def is_Prims(number): if number == 2: return True / ...
 - BZOJ_2002_[Hnoi2010]Bounce 弹飞绵羊_LCT
			
BZOJ_2002_[Hnoi2010]Bounce 弹飞绵羊_LCT Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏. ...
 - 「LuoguP3376」 【模板】网络最大流
			
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
 - P2383 狗哥玩木棒
			
题目背景 狗哥又趁着语文课干些无聊的事了... 题目描述 现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢? 输入输出格式 输入格式: 输入文件中的第一行是一个整数n表示测试 ...
 - Mysql数据库的打开和关闭
			
Mysql数据库的打开和关闭: 选择计算机(win7)-右键管理 在新窗口选择--服务 5 找到mysql,然后右键-启动(停止)
 - bzoj 2238 Mst——树链剖分
			
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2238 一条非树边可以对一条链的树边产生影响.注意是边,所以把边下放到点上,只要跳 top 时 ...