android 多線程斷點續傳下載器

來源:互聯網
上載者:User

多線程斷點下載流程圖:

多線程斷點續傳下載原理介紹:

在下載的時候多個線程並發可以佔用伺服器端更多資源,從而加快下載速度

手機端下載資料時難免會出現無訊號斷線、電量不足等情況,所以需要斷點續傳功能

根據下載資料長度計算每個線程下載的資料位元置,程式中開啟多個線程並發下載

在要求標頭中設定Range欄位就可以擷取指定位置的資料,例如:Range: bytes=100-200

在下載過程中記錄每個線程已拷貝資料的數量,如果下載中斷,下次啟動時從屬記錄位置繼續下載

執行個體圖:

 一. 進度條使用<Progress>進行配置

1.1 預設為圓形進度條,水平進度條需要配置style屬性,android:attr/progressBarStyleHorizontal

      使用android.R.attr.progressBarStyleHorizontal作為樣式

1.2 當點擊下載按鈕時開啟多線程下載,下載過程中修改進度條進度

      設定最大刻度:setMax()

      設定當前進度:setProgress()


二. 斷點續傳

 2.1 斷點續傳需要在下載過程中記錄每條線程的下載進度 (儲存在 檔案名稱.temp檔案中 同迅雷中的.temp檔案的功能)

 2.2 每次下載開始之前先讀取資料庫,查詢是否有未完成的記錄,有就繼續下載,沒有則建立新記錄插入資料庫

 2.3 在每次向檔案中寫入資料之後,在資料庫中更新下載進度

 2.4 下載完成之後刪除資料庫中下載記錄(檔案名稱.temp檔案)

 三. Handler傳輸資料

 3.1 主線程中建立的View只能在主線程中修改,其他線程只能通過和主線程通訊,在主線程中改變View資料

 3.2 我們使用Handler可以處理這種需求

3.3 主線程中建立Handler,重寫handleMessage()方法

3.4 新線程中使用Handler發送訊息,主線程即可收到訊息,並且執行handleMessage()方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.