天天看點

AsyncTask實作多任務多線程斷點續傳下載下傳

  這篇部落格是asynctask下載下傳系列的最後一篇文章,前面寫了關于斷點續傳的和多線程下載下傳的部落格,這篇是在前兩篇的基礎上面實作的,有興趣的可以去看下。

  這裡模拟應用市場app下載下傳實作了一個demo,因為隻有一個界面,是以沒有将下載下傳放到service中,而是直接在activity中建立。在正式的項目中,下載下傳都是放到service中,然後通過broadcast通知界面更新進度。

<a></a>

  上代碼之前,先看下demo的運作效果圖吧。

AsyncTask實作多任務多線程斷點續傳下載下傳

  下面我們看代碼,這裡每一個檔案的下載下傳定義一個downloador來管理下

載該檔案的所有線程(暫停、下載下傳等)。downloador建立3個downloadtask(這裡定義每個檔案配置設定3個線程下載下傳)來下載下傳該檔案特定的起

  1、downloador類

  2、downloadtask類

  downloador和downloadtask隻這個例子的核心代碼,下面

是關于資料庫的,因為要實作斷點續傳必須要在暫停的時候将每個線程下載下傳的位置記錄下來,友善下次繼續下載下傳時讀取。這裡有兩個表,一個是存放每個檔案的下載下傳

狀态的,一個是存放每個檔案對應的每個線程的下載下傳狀态的。

  3、dbhelper

  4、downloadfiledao,檔案下載下傳狀态的資料庫操作類

  5、downloadinfodao,每個線程對應下載下傳狀态的資料庫操作類

  具體的界面和使用代碼我就不貼代碼了,代碼有點多。需要的可以下載下傳demo的源碼看看。

  因為還沒有花太多時間去測,裡面難免會有些bug,如果大家發現什麼問題,歡迎留言探讨,謝謝!