在我們做Android開發的時候經常遇到的就是下載了,現在下載的方法有很多很多,那麼怎麼做到斷點續傳下載呢!很多人都頭疼這個問題,如果我們沒有很好的邏輯真不是很容易解決啊。我參考了一下前輩們的資料了整理了一個項目,能實現多個文件的同時下載。
是我創建數據庫的一個SQLiteOpenHelper類。用來首次運行時創建數據庫。
源碼下載:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2012年資料/3月/4/Android 下載文件(支持多任務,支持斷點.....) /
DBHelper.java
- package com.icss.DBHelper;
-
- import android.content.Context;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteOpenHelper;
-
- /**
- * 建立一個數據庫幫助類
- */
- public class DBHelper extends SQLiteOpenHelper {
- // download.db-->數據庫名
- public DBHelper(Context context) {
- super(context, "download.db", null, 1);
- }
-
- /**
- * 在download.db數據庫下創建一個download_info表存儲下載信息www.linuxidc.com
- */
- @Override
- public void onCreate(SQLiteDatabase db) {
- db.execSQL("create table download_info(_id integer PRIMARY KEY AUTOINCREMENT, thread_id integer, "
- + "start_pos integer, end_pos integer, compelete_size integer,url char)");
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-
- }
-
- }
在下載時,我們有進度條來顯示進度,怎麼確定進度條的進度,大小和起始位置呢?這裡我定義了一個LoadInfo類來記錄下載器詳細信息。代碼如下:
LoadInfo:
- package com.icss.entity;
-
- public class LoadInfo {
-
- public int fileSize;// 文件大小
- private int complete;// 完成度
- private String urlstring;// 下載器標識
- public LoadInfo() {
- super();
- // TODO Auto-generated constructor stub
- }
- public LoadInfo(int fileSize, int complete, String urlstring) {
- super();
- this.fileSize = fileSize;
- this.complete = complete;
- this.urlstring = urlstring;
- }
- public int getFileSize() {
- return fileSize;
- }
- public void setFileSize(int fileSize) {
- this.fileSize = fileSize;
- }
- public int getComplete() {
- return complete;
- }
- public void setComplete(int complete) {
- this.complete = complete;
- }
- public String getUrlstring() {
- return urlstring;
- }
- public void setUrlstring(String urlstring) {
- this.urlstring = urlstring;
- }
- @Override
- public String toString() {
- return "LoadInfo [fileSize=" + fileSize + ", complete=" + complete
- + ", urlstring=" + urlstring + "]";
- }
-
-
- }