Rxjava+Retrofit+SqlBrite+SqlDelight 实现多文件断点续传下载。
了解源码请看文章: http://blog.csdn.net/niubitianping/article/details/70599355
DownManager.init(this):
//创建基本任务,参数为:文件保存的路径、下载的url要全路径、下载任务的名称
DownInfo downInfo = DownInfo.builder().create(getPath(url), url, name);
//开始下载
DownManager.getInstance().startDown(downInfo);
//查询当前所有的下载
DBUtil.getInstance().getAllDown()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(adapter);
注意要设置两个View的回调监听器
- 第一个是ViewHold初始化时候设置Rxbus
- 第二个是onBindHolder的时候addListener
public ListViewHolder(View itemView) {
super(itemView);
// 初始化View
mBtHandle.setOnClickListener(this);
//因为(downInfo.downUrl()用来传递进度信息,这里使用两个(downInfo.downUrl()进行标识
RxBus.with().setEvent(DownManager.DOWN_ADD_SUBSCRIBE)
.onNext(new Action1<Events<?>>() {
@Override
public void call(Events<?> events) {
//添加监听器,在列表点击开始回调
String link = events.getContent();
link = link.replace(DownManager.DOWN_ADD_SUBSCRIBE, "");
DownManager.getInstance().addListener(link, listener);
}
}).create();
}
@Override
public void onBindViewHolder(final ListViewHolder holder, final int position) {
//在Holder里面设置数据
//添加View监听器
DownManager.getInstance().addListener(downInfo.downUrl(), listener);
}