XDownload介绍

本库封装基于Okhttp3,Retrofit2,RxJava2.0,Greendao3.2

ps : 当然当然,都封装好了,你也可以无视

GitHub地址

如果你觉得好用,对你有帮助,请给个star

接口使用360市场的如果有侵权,联系本人删除,谢谢

—— [ Demo地址,点击打开 ]

效果图

f41e61ce1dd0c1543a9815a2eefa327f.png

5e15e5c1ff9d3a95ac51cf79a06efbee.png

273d949be7df12af90de52fcd1016435.png

bca2310cf5085d11995d42491f48f762.png

主要功能

自动更新,酷炫的水波纹

网络请求,支持自动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

不缓存

缓存使用案例

79f6e41e3db68da737ce3a89904faef1.png

自定义缓存时间使用案例

683e7b1e4d9025158e2bfbb6dc7bd352.png

String缓存处理

因为ResponseBody.string() 方法 机制问题。所以框架内。String缓存需要

391f46bed2f2066314d77995742f9888.png

//需要自己手动存储

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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐