android多线程下载技术详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android 多线程、断点续传下载技术

1.为什么使用该技术?

答:(1)之所以采用多线程下载是因为考虑到手机,及移动设备的cup处理能力,让下载任务多抢占cup资源,从而加快了下载的速度,提高了用户体验

(2)断点续传技术,就是在下载过程中如果网络出现问题,导致文件没有下载完,那么下次下载时,接着上次终端位置继续下载,从而减轻了服务器的负担。

2.下面我们就开始建一个多线程下载的项目,来体验多线程下载的优势,项目的结构如下

2.1设计UI

main.xml

代码如下:

xmlns:android="/apk/res /android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/path"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="/kcn/pc/K anbox_10012.exe"

android:id="@+id/path"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/button"

android:id="@+id/button"

/>

android:layout_width="fill_parent"

android:layout_height="20px"

style="?android:attr/progressBarStyleHorizontal"

android:id="@+id/downloadbar"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="center"

android:id="@+id/result"

/>

其中引用的string.xml如下:

Hello World, SmartDownload!

SMART多线程断点下载器

下载路径

下载

下载完成

下载失败

SDCard不存在或者写保护

3.数据库阶段:

3.1编写数据库工具类DBOpenHeler

package com.smart.db;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;

public class DBOpenHelper extends SQLiteOpenHelper {

private static final String DBNAME = "smart.db";

private static final int VERSION = 1;

public DBOpenHelper(Context context) {

super(context, DBNAME, null, VERSION);

}

@Override

public void

db.execSQL("CREATE TABLE IF NOT EXISTS SmartFileDownlog (id integer primary key autoincrement, downpath varchar(100), threadid INTEGER, downlength INTEGER)");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXISTS SmartFileDownlog");

onCreate(db);

}

}

3.2对各个线程的下载记录进行数据库的操作,编写Fileservice 类

代码如下

package com.smart.db;

import java.util.HashMap;

相关文档
最新文档