Android 使用AsyncTask实现多任务多线程断点续传下载

时间:2021-05-21

这篇博客是AsyncTask下载系列的最后一篇文章,前面写了关于断点续传的和多线程下载的博客,这篇是在前两篇的基础上面实现的,有兴趣的可以去看下。

  一、AsyncTask实现断点续传

  二、AsyncTask实现多线程断点续传

  这里模拟应用市场app下载实现了一个Demo,因为只有一个界面,所以没有将下载放到Service中,而是直接在Activity中创建。在正式的项目中,下载都是放到Service中,然后通过BroadCast通知界面更新进度。

  上代码之前,先看下demo的运行效果图吧。

  下面我们看代码,这里每一个文件的下载定义一个Downloador来管理下载该文件的所有线程(暂停、下载等)。Downloador创建3个DownloadTask(这里定义每个文件分配3个线程下载)来下载该文件特定的起止位置。这里要通过文件的大小来计算每个线程所下载的起止位置,详细可以参考《AsyncTask实现多线程断点续传》。

  1、Downloador类

package com.bbk.lling.multitaskdownload.downloador;import android.content.Context;import android.content.Intent;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.TextUtils;import android.util.Log;import android.widget.Toast;import com.bbk.lling.multitaskdownload.beans.AppContent;import com.bbk.lling.multitaskdownload.beans.DownloadInfo;import com.bbk.lling.multitaskdownload.db.DownloadFileDAO;import com.bbk.lling.multitaskdownload.db.DownloadInfoDAO;import com.bbk.lling.multitaskdownload.utils.DownloadUtils;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Executor;import java.util.concurrent.Executors;/** * @Class: Downloador * @Description: 任务下载器 * @author: lling(/liuling07/MultiTaskAndThreadDownload

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章