最近在学Rxjava,觉得这真是个神器,作为一个有轻微强迫症的程序员,自从用了Rxjava后,代码感觉清爽多了,再也不用为切换线程而使得代码臃肿难看发愁了。
整体思路是这样的:构建一个发射DownloadTask的发射器
ObservableOnSubscribe<DownloadTask>,使用OkHttpClien在subscribe(ObservableEmitter<DownloadTask> e)方法中下载文件,在下载过程中发射onNext事件更新下载进度,成功后发射onComplete,错误则发射onError通知,使用subscribeOn和observeOn切换线程,并传入一个DownLoadObserver进行回调。
Demo链接:https://github.com/RegonAngel/DownloadManagerDemo
首先是DownloadTask类:DownloadTask.java
public class DownloadTask {
/*文件url*/
private String url;
/*文件名*/
private String filename;
/*目录*/
private String directory;
/*下载进度*/
private int progress;
DownloadTask(String url){
this.url = url;
}
DownloadTask(String url, String directory){
this.url = url;
this.directory = directory;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public String getDirectory() {
return directory;
}
public void setDirectory(String directory) {
this.di