歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 多線程斷點續傳下載器

Android 多線程斷點續傳下載器

日期:2017/3/1 10:18:47   编辑:Linux編程

多線程斷點下載流程圖:






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