天天看點

Android多線程斷點續傳下載下傳

這個月接到一個項目,要寫一個像360助手一樣的對于軟體管理的APP;其中,遇到了一個問題:多線程斷點下載下傳

這個 ,由于之前沒有寫過這方面的應用功能。是以,不免要自學了。然後就在各個昂站上收索并整理了一下。跟大家分享一下,也能加深我在這方面的了解。

什麼是多線程下載下傳?

多線程下載下傳其實就是迅雷,BT一些下載下傳原理,通過多個線程同時和伺服器連接配接,那麼你就可以榨取到較高的帶寬了,大緻做法是将檔案切割成N塊,每塊交給單獨一個線程去下載下傳,各自下載下傳完成後将檔案塊組合成一個檔案,程式上要完成做切割群組裝的小算法

什麼是斷點續傳?

斷點續傳,就是當我們下載下傳未結束時候,退出儲存下載下傳進度,當下次打開繼續下載下傳的時接着上次的進度繼續下載下傳,不用每次下載下傳都重新開始,那麼有關斷點續傳的原理和實作手段。

怎麼完成多線程斷點續傳?

将兩者合二為一需要程式記住每個檔案塊的下載下傳進度,并儲存入庫,當下載下傳程式啟動時候你需要判斷程式是否已經下載下傳過該檔案,并取出各個檔案塊的儲存記錄,換算出下載下傳進度繼續下載下傳,在這裡你需要掌握java多線程的基本知識,handler的使用,以及集合,算法,檔案操作等基本技能,同時還要解決sqlite資料庫的同步問題,因為它是不太怎麼支援多線程操作的,控制不好經常會出現庫被鎖定的異常,同時在android2.3以後就不能activity中直接操作http,否則你将收到系統送上的NetworkOnMainThreadException異常,在UI體驗上一定記住要使用異步完成。

那麼,了解過這些之後來看一下源碼就會拉結了。。。。。。

先看一下,效果圖:

Android多線程斷點續傳下載下傳
Android多線程斷點續傳下載下傳
Android多線程斷點續傳下載下傳

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

至于那些部分代碼,我就不在這裡貼了;我覺得還是直接看源碼的友善。

   這裡是源碼的下載下傳網址,點選即可下載下傳