diff --git "a/design_document/\345\244\232\347\272\277\347\250\213\345\220\216\345\217\260\344\270\213\350\275\275.md" "b/design_document/\345\244\232\347\272\277\347\250\213\345\220\216\345\217\260\344\270\213\350\275\275.md" index 2a1c4d299bf46bfa6f09ee0f0942ae5c68bc0949..a5fd9eb627c10873d175fc7de2809114fc9ce732 100644 --- "a/design_document/\345\244\232\347\272\277\347\250\213\345\220\216\345\217\260\344\270\213\350\275\275.md" +++ "b/design_document/\345\244\232\347\272\277\347\250\213\345\220\216\345\217\260\344\270\213\350\275\275.md" @@ -1,20 +1,18 @@ # 多线程后台下载 - 设计的主要类 - - 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++) {