提交 b65070fa 编写于 作者: forward_huan's avatar forward_huan 提交者: GitHub

Update 多线程后台下载.md

上级 9a14f953
# 多线程后台下载
- 设计的主要类
- package com.openthos.appstore.utils.sql.SQLiteHelper
- package com.openthos.appstore.utils.sql.DownloadKeeper
- package com.openthos.appstore.utils.download.DownLoader
- package com.openthos.appstore.utils.download.DownLoadListener
- package com.openthos.appstore.utils.download.DownLoadManager
- package com.openthos.appstore.utils.download.DownLoadService
- package com.openthos.appstore.bean.SQLDownLoadInfo
- package com.openthos.appstore.utils.SQLiteHelper
- package com.openthos.appstore.utils.DownloadKeeper
- package com.openthos.appstore.download.Downloader
- package com.openthos.appstore.download.DownloadListener
- package com.openthos.appstore.download.DownloadManager
- package com.openthos.appstore.download.DownloadService
- package com.openthos.appstore.bean.DownloadInfo
- package com.openthos.appstore.bean.TaskInfo
- 主要实现
- 首先是两个记录数据的实体类SQLDownLoadInfo.java和TaskInfo.java,这个就不附代码了
- 在者是数据库表和数据库操作类,数据库表的内容如下:
***
@Override
public void onCreate(SQLiteDatabase db) {
......@@ -32,35 +30,24 @@
+ "iconUrl VARCHAR "
+ ")";
db.execSQL(downloadsql);
String appinstall = "CREATE TABLE IF NOT EXISTS " + APP_INSTALL + " ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "
+ "name VARCHAR, "
+ "packageName VARCHAR, "
+ "versionName VARCHAR, "
+ "versionCode VARCHAR "
+ ")";
db.execSQL(appinstall);
}
***
- 下载监听
***
public interface DownLoadListener {
public void onStart(SQLDownLoadInfo sqlDownLoadInfo);
public void onProgress(SQLDownLoadInfo sqlDownLoadInfo, boolean isSupportBreakpoint);
public void onStop(SQLDownLoadInfo sqlDownLoadInfo, boolean isSupportBreakpoint);
public void onError(SQLDownLoadInfo sqlDownLoadInfo, String error);
public void onSuccess(SQLDownLoadInfo sqlDownLoadInfo);
public interface DownloadListener {
public void onStart(DownloadInfo downloadInfo);
public void onProgress(DownloadInfo downloadInfo, boolean isSupportF);
public void onStop(DownloadInfo downloadInfo, boolean isSupportFTP);
public void onError(DownloadInfo downloadInfo, String error);
public void onSuccess(DownloadInfo downloadInfo);
}
***
***
- 后台下载
***
public class AppStoreBinder extends Binder {
......@@ -77,12 +64,7 @@
//添加任务
public void addTask(String task, String url, String fileName,
String packageName, String iconUrl) {
downLoadManager.addTask(task, url, fileName, packageName, iconUrl);
}
//添加任务
public void addTask(String task, String url, String fileName, String packageName) {
downLoadManager.addTask(task, url, fileName, packageName);
mDownloadManager.addTask(task, url, fileName, packageName, iconUrl);
}
//开始所有任务
......@@ -164,28 +146,19 @@
}
//添加下载任务
public int addTask(String taskID, String url, String fileName,
String packageName, String iconUrl) {
return addTask(taskID, url, fileName, packageName, null, iconUrl);
}
//添加下载任务
public int addTask(String taskID, String url, String fileName, String packageName) {
return addTask(taskID, url, fileName, packageName, null);
}
//添加下载任务
public int addTask(String taskID, String url,
String fileName, String packageName, String filepath, String iconUrl) {
public void addTask(String taskID, String url,
String fileName, String packageName, String iconUrl) {
if (taskID == null) {
taskID = fileName;
}
int state = getAttachmentState(taskID, fileName, filepath);
if (state != ADD_TASK) {
FileHelper.deleteFile(fileName);
DownloadInfo downloadInfoByPkgName = mSQLOperator.getDownloadInfoByPkgName(packageName);
if (downloadInfoByPkgName != null) {
mSQLOperator.deleteDownloadInfo(mUserID, taskID);
deleteTask(taskID);
}
SQLDownLoadInfo downloadinfo = new SQLDownLoadInfo();
DownloadInfo downloadinfo = new DownloadInfo();
downloadinfo.setUserID(mUserID);
downloadinfo.setDownloadSize(0);
downloadinfo.setFileSize(0);
......@@ -194,24 +167,19 @@
downloadinfo.setUrl(url);
downloadinfo.setPackageName(packageName);
downloadinfo.setIconUrl(iconUrl);
if (filepath == null) {
downloadinfo.setFilePath(FileHelper.getDefaultFile(fileName));
} else {
downloadinfo.setFilePath(filepath);
}
DownLoader taskDownLoader = new DownLoader(
mContext, downloadinfo, mPool, mUserID, mIsSupportBreakpoint, true);
taskDownLoader.setDownLodSuccesslistener(mDownloadsuccessListener);
if (mIsSupportBreakpoint) {
taskDownLoader.setSupportBreakpoint(true);
downloadinfo.setFilePath(FileHelper.getDownloadUrlPath(url));
Downloader taskDownloader = new Downloader(
mContext, downloadinfo, mPool, mUserID, mIsSupportFTP, true);
if (mIsSupportFTP) {
taskDownloader.setSupportFTP(true);
} else {
taskDownLoader.setSupportBreakpoint(false);
taskDownloader.setSupportFTP(false);
}
taskDownLoader.start();
mTaskList.add(0, taskDownLoader);
return 1;
taskDownloader.start();
mTaskList.add(0, taskDownloader);
}
//删除下载任务
public void deleteTask(String taskID) {
for (int i = 0; i < mTaskList.size(); i++) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册