断点下载思路:
1.首先获取网络文件的长度,在本地创建一个相同大小的文件
2.创建N个线程,将网络文件平均分为N份依次分给N个线程下载,多出的加一个线程N=file.length/N==0?N:N+1;
3.开始从网络文件的不同位置下载数据,并写入相应的本地位置,注意:要计算每条数据下载的起始点和终点位置
4.每段数据的下载情况都放在数据库(线程id,下载进度等)
5.下载过程中,子线程不断更新进度】
细节:
为下载速度和防止下载意外中断产生不必要的麻烦,在下载时采用多线程断点下载技术。先获取源文件的大小,然后依据线程条数计算出每条线程应下载的数据长度block,再根据线程ID和block计算出每条线程下载的开始和结束端,最后开启多线程进行下载。在下载过程中利用RandomAccessFile类的seek(long
position)和writer(
)方法将数据写入文件;与此同时不断更新数据库,实时记录每条线程的下载情况。在此过程中利用Handler和ProgressBar显示下载进度。
网友评论