Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openthos
appstore-ota-analysis
提交
b65070fa
A
appstore-ota-analysis
项目概览
openthos
/
appstore-ota-analysis
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
2
Wiki
分析
仓库
DevOps
项目成员
Pages
A
appstore-ota-analysis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
2
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b65070fa
编写于
5月 09, 2017
作者:
forward_huan
提交者:
GitHub
5月 09, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update 多线程后台下载.md
上级
9a14f953
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
38 addition
and
70 deletion
+38
-70
design_document/多线程后台下载.md
design_document/多线程后台下载.md
+38
-70
未找到文件。
design_document/多线程后台下载.md
浏览文件 @
b65070fa
# 多线程后台下载
-
设计的主要类
-
package com.openthos.appstore.utils.
sql.
SQLiteHelper
-
package com.openthos.appstore.utils.
sql.
DownloadKeeper
-
package com.openthos.appstore.
utils.download.DownL
oader
-
package com.openthos.appstore.
utils.download.DownL
oadListener
-
package com.openthos.appstore.
utils.download.DownL
oadManager
-
package com.openthos.appstore.
utils.download.DownL
oadService
-
package com.openthos.appstore.bean.
SQLDownL
oadInfo
-
package com.openthos.appstore.utils.SQLiteHelper
-
package com.openthos.appstore.utils.DownloadKeeper
-
package com.openthos.appstore.
download.Downl
oader
-
package com.openthos.appstore.
download.Downl
oadListener
-
package com.openthos.appstore.
download.Downl
oadManager
-
package com.openthos.appstore.
download.Downl
oadService
-
package com.openthos.appstore.bean.
Downl
oadInfo
-
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 Down
L
oadListener {
public void onStart(
SQLDownLoadInfo sqlDownL
oadInfo);
public void onProgress(
SQLDownLoadInfo sqlDownLoadInfo, boolean isSupportBreakpoint
);
public void onStop(
SQLDownLoadInfo sqlDownLoadInfo, boolean isSupportBreakpoint
);
public void onError(
SQLDownLoadInfo sqlDownL
oadInfo, String error);
public void onSuccess(
SQLDownLoadInfo sqlDownL
oadInfo);
public interface Down
l
oadListener {
public void onStart(
DownloadInfo downl
oadInfo);
public void onProgress(
DownloadInfo downloadInfo, boolean isSupportF
);
public void onStop(
DownloadInfo downloadInfo, boolean isSupportFTP
);
public void onError(
DownloadInfo downl
oadInfo, String error);
public void onSuccess(
DownloadInfo downl
oadInfo);
}
***
***
-
后台下载
***
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 SQLDownL
oadInfo();
DownloadInfo downloadinfo = new Downl
oadInfo();
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 {
taskDown
Loader.setSupportBreakpoint
(false);
taskDown
loader.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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录