java缓存队列_基于OkHttp Retrofit RxJava 多线程下载。请求、缓存、自动更新.限制队列数.封装库...
XDownload介绍本库封装基于Okhttp3,Retrofit2,RxJava2.0,Greendao3.2ps : 当然当然,都封装好了,你也可以无视GitHub地址如果你觉得好用,对你有帮助,请给个star接口使用360市场的如果有侵权,联系本人删除,谢谢—— [ Demo地址,点击打开 ]效果图主要功能自动更新,酷炫的水波纹网络请求,支持自动ProgressDialog网络请求,...
XDownload介绍
本库封装基于Okhttp3,Retrofit2,RxJava2.0,Greendao3.2
ps : 当然当然,都封装好了,你也可以无视
GitHub地址
如果你觉得好用,对你有帮助,请给个star
接口使用360市场的如果有侵权,联系本人删除,谢谢
—— [ Demo地址,点击打开 ]
效果图
主要功能
自动更新,酷炫的水波纹
网络请求,支持自动ProgressDialog
网络请求,自定义是否缓存,无论任何方式
网络请求,自定义缓存时间,无网络缓存时间
队列下载,可限制队列最大数。
断点下载,APP强制关闭,依旧不影响
网络请求缓存,可缓存String,Gson
代码全注释,方便您的阅读
如何使用
在当前工程中引入
compile ‘com.github.2745329043:XDownloadLibrary:1.0.8’
最好直接参考demo
https://github.com/2745329043/XDownloadDemo
Application初始化工作
//初始化网络请求
RetrofitClient.init(this)
.setDebug(true) //是否输出调试日志
.setBaseUrl(IConstantPool.sCommonUrl)
.setApplictionId(BuildConfig.APPLICATION_ID)
/** 以下都是按需设置 */
.setDownloadsQueueCount(5) //下载最大数量
.setDbName("net_buffer_db") //数据库表名
.setConnectionTimeout(6) //普通请求连接超时
.setReadTimeout(6) //普通请求读取超时
.setDownConnectionTime(6) //下载连接超时 6秒
.setNetBufferTime(60) //有网络的情况下缓存 60秒
.setNoNetBufferTime(24 * 60 * 60 * 7) //无网络的时候,缓存
/** 头部参数 */
.setNetRequestParamsListener(new NetRequestParamsListener() {
@Override
public HashMap getHeaderParams() {
//需要请传,不需要返回 null
// return null;
HashMap map = new HashMap<>();
map.put("userId","2745329043");
return map;
}
})
/** 设置完,记得Buid */
.build();
先来效果图
网络请求
> **定义 HttpService 接口**
public interface HttpService {
/* 获取下载列表 post */
@POST(IConstantPool.DOWNLOAD_URL)
Observable getDownloadList(
@Query("page") int page,
@Query("type") int type
);
/* 普通请求 Get -> 获取 String 版本*/
@GET(IConstantPool.REQUEST_LIST_URL)
Observable requestList();
/* 普通请求 Get -> 获取 GSON版本 版本 -> 这奇葩结构 是List 的这种*/
@GET(IConstantPool.REQUEST_LIST_URL)
Observable> requestList_GSON();
}
普通String请求
RetrofitClient.getService(HttpService.class)
.requestList()
.compose(new ApplySchedulers())
.subscribe(new NetProgressSubscriber<>(RequestFragment.this, NetDialogConfig.NORMAL_LOADING, new SimpleNetResponseListener() {
@Override
public void onSucceed(ResponseBody body, String s) {
try {
ToastUtils.getInstance().toast(body.string());
} catch (IOException e) {
e.printStackTrace();
}
}
}));
普通Gson请求
RetrofitClient.getService(HttpService.class)
.requestList_GSON()
.compose(new ApplySchedulers>())
.subscribe(new NetProgressSubscriber<>(RequestFragment.this, NetDialogConfig.NORMAL_LOADING, new SimpleNetResponseListener>() {
@Override
public void onSucceed(List bean, String s) {
ToastUtils.getInstance().toast("拿到好多数据:" + bean.size());
}
}));
网络请求过程中,是否显示Dialog
参数
说明
NetDialogConfig.UN_LOADING
不显示
NetDialogConfig.NORMAL_LOADING
显示,点击Dialog外,销毁并关闭队列
NetDialogConfig.FORBID_LOADING
显示,不可取消
#
网络请求过程中,是否缓存数据
参数
说明
NetBufferConfig.NORMAL_BUFFER
缓存
NetBufferConfig.UN_BUFFER
不缓存
缓存使用案例
自定义缓存时间使用案例
String缓存处理
因为ResponseBody.string() 方法 机制问题。所以框架内。String缓存需要
//需要自己手动存储
BufferDbUtil.getInstance().updateResulteBy(IConstantPool.REQUEST_LIST_URL,result);
下载功能
//下载管理 - 记得 ondestory
private RetrofitDownloadManager mRetrofitDownloadManager;
//使用 RetrofitDownloadManager 创建下载对象,内部有断点功能
mDownInfo = mRetrofitDownloadManager.createDownInfo("http://xxx.apk");
//点击按钮,开始更新
mRetrofitDownloadManager.down(mDownInfo);
就这么简单,要记得释放资源,当然你不做也可以
@Override
public void onDestroy() {
super.onDestroy();
mRetrofitDownloadManager.destory();
}
多下载参考demo
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)