我們一起造輪子 - RxDownload
基於RxJava打造的下載工具, 支援多執行緒和斷點續傳
專案地址
主要功能:
- 使用Retrofit+OKHTTP來進行網路請求
- 基於RxJava打造, 支援RxJava各種操作符鏈式呼叫
- 斷點續傳, 根據服務端響應值自動判斷是否支援斷點續傳
- 若不支援斷點續傳,則進行傳統下載
- 多執行緒下載, 可以設定最大執行緒, 預設值為3
- 檢測到網路連線失敗自動嘗試重連, 並可配置最大重試次數,預設值為3
- 支援根據Last-Modified欄位判斷服務端檔案是否變化
- 與伺服器進行驗證過程中,使用更輕便的HEAD請求方式僅獲取響應頭,減輕服務端負擔
使用方式
1.新增Gradle依賴
dependencies{ compile 'zlc.season:rxdownload:1.1.0' }
2.程式碼呼叫
Subscription subscription = RxDownload.getInstance() .download(url, "weixin.apk", null) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<DownloadStatus>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(final DownloadStatus status) { } });
download(String url, String saveName, String savePath)引數說明:
引數分別為下載地址,儲存檔名,儲存地址.
url與saveName為必傳引數, savePath為可選引數, 預設的下載地址為/storage/emulated/0/Download/目錄下, 也就是內建儲存的Download目錄
3.引數配置
可以配置的引數如下:
Subscription subscription = RxDownload.getInstance() .maxThread(10)//設定最大執行緒 .maxRetryCount(10) //設定下載失敗重試次數 .retrofit(myRetrofit)//若需要自己的retrofit客戶端,可在這裡指定 .defaultSavePath(defaultSavePath)//設定預設的下載路徑 .download(url,savename,savepath) //開始下載 .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<DownloadStatus>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(DownloadStatus status) { //Status表示的是當前的下載進度 } });
4.DownloadStatus 下載狀態
class DownloadStatus { private long totalSize; private long downloadSize; public boolean isChunked = false; //... //返回檔案總大小,單位為byte public long getTotalSize() {} //返回已下載總大小,單位為byte public long getDownloadSize() {} //返回格式化的總大小,如:10MB public String getFormatTotalSize() {} //返回格式化的已經下載的大小,如:5KB public String getFormatDownloadSize() {} //返回格式化的狀態字串,如:2MB/36MB public String getFormatStatusString() { } //返回下載的百分比, 保留兩位小數,如:5.25% public String getPercent() {} }
5.取消或暫停下載
Subscription subscription = RxDownload.getInstance() .download(url, null, null) //... //取消訂閱, 即可暫停下載, 若服務端不支援斷點續傳,下一次下載會重新下載,反之會繼續下載 if (subscription != null && !subscription.isUnsubscribed()) { subscription.unsubscribe(); }
6.更多功能後續將會逐步完善
若您對此專案有疑問,歡迎來提issues.
最後
在現在這個金三銀四的面試季,我自己在網上也蒐集了很多資料做成了文件和架構視訊資料免費分享給大家【 包括高階UI、效能優化、架構師課程、NDK、Kotlin、混合式開發(ReactNative+Weex)、Flutter等架構技術資料 】,希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習。
資料獲取方式:加入Android架構交流QQ群聊:513088520 ,進群即領取資料!!!
點選連結加入群聊【Android移動架構總群】:加入群聊

資料大全