這篇文章主要介紹了基于Ok+Rxjava如何實現(xiàn)斷點續(xù)傳下載,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比阿魯科爾沁網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式阿魯科爾沁網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋阿魯科爾沁地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
具體內(nèi)容如下
1、基于Ok+Rxjava實現(xiàn)斷點續(xù)傳下載
2、基于Ok+Rxjava+Retrofit實現(xiàn)斷點續(xù)傳下載
最近總結(jié)一下了一下之前學過以及用到過得功能,整理了一個基于Ok+Rxjava實現(xiàn)斷點續(xù)傳下載的demo。下面先給大家展示一下使用效果吧。
說下我的大致思路吧:根據(jù)文件下載url按照自己定義的規(guī)則生成文件名,判斷本地同路徑下是否存在此文件,如果存在,文件大小與 DownLoadObserver(觀察者)通過onnext(DownloadInfo downloadInfo)方法回調(diào)下載進度 下面上主要代碼: 從服務(wù)器獲取文件長度的時候注意一下,Android P之后,也就是api 28以上禁止明文網(wǎng)絡(luò)傳輸。需要在你的AndroidManifest中的application標簽中聲明"android:usesCleartextTraffic="true",允許應(yīng)用進行明文傳輸。 使用方法:首先要獲取sd卡權(quán)限 感謝你能夠認真閱讀完這篇文章,希望小編分享的“基于Ok+Rxjava如何實現(xiàn)斷點續(xù)傳下載”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!/**
* 開始下載
* @param url 下載請求的網(wǎng)址
* @param downFileCallback 用來回調(diào)的接口
*/
public void download(final String url, final DownFileCallback downFileCallback) {
if (url == null || downCalls.get(url) != null) {
return;
}
Observable.just(url)
.filter(new Predicate
/**
* 根據(jù)url暫停下載操作
* @param url
*/
public void cancel(String url) {
Call call = downCalls.get(url);
if (call != null) {
call.cancel();//取消
}
downCalls.remove(url);
}
/**
* 創(chuàng)建被觀察者DownloadSubscribe
*/
private class DownloadSubscribe implements ObservableOnSubscribe
/**
* 從服務(wù)器獲取文件長度
*
* @param downloadUrl
* @return
*/
private long getContentLength(String downloadUrl) {
Request request = new Request.Builder()
.url(downloadUrl)
.build();
try {
Response response = mClient.newCall(request).execute();
if (response != null && response.isSuccessful()) {
long contentLength = response.body().contentLength();
response.close();
return contentLength == 0 ? DownloadInfo.TOTAL_ERROR : contentLength;
}
} catch (IOException e) {
e.printStackTrace();
}
return DownloadInfo.TOTAL_ERROR;
}
DownloadManager.getInstance().downloadPath(本地存在地址).download(url1, new DownFileCallback() {
@Override
public void onProgress(long totalSize, long downSize) {
progress1.setMax((int) totalSize);
progress1.setProgress((int) downSize);
}
@Override
public void onSuccess(String url) {
Toast.makeText(MainActivity.this, url1 + "下載完成", Toast.LENGTH_SHORT).show();
}
@Override
public void onFail(String msg) {
Toast.makeText(MainActivity.this, url1 + "下載失敗", Toast.LENGTH_SHORT).show();
}
});
當前文章:基于Ok+Rxjava如何實現(xiàn)斷點續(xù)傳下載
文章轉(zhuǎn)載:http://weahome.cn/article/pdhhhi.html