歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 多線程斷點續傳下載器

多線程斷點下載流程圖:






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

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

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

根據下載數據長度計算每個線程下載的數據位置,程序中開啟多個線程並發下載

在請求頭中設置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()方法

Copyright © Linux教程網 All Rights Reserved