# XSnow
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/bfcabf1d9793485d84f090e542255710)](https://www.codacy.com/app/xiaoyaoyou1212/XSnow?utm_source=github.com&utm_medium=referral&utm_content=xiaoyaoyou1212/XSnow&utm_campaign=Badge_Grade) [![License](https://img.shields.io/badge/License-Apache--2.0-green.svg)](https://github.com/xiaoyaoyou1212/XSnow/blob/master/LICENSE) [![API](https://img.shields.io/badge/API-12%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=12)
基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载、UI模块,基本都是项目中必用功能,每个模块充分解耦,可自由拓展。
XSnow,X:未知一切,取其通用之意;Snow:雪,取其纯净之意。该框架通用纯净,只依赖公共核心库。
- 项目地址:[https://github.com/xiaoyaoyou1212/XSnow](https://github.com/xiaoyaoyou1212/XSnow)
- 项目依赖:`compile 'com.vise.xiaoyaoyou:xsnow:2.1.4'`
### 版本说明
[![LatestVersion](https://img.shields.io/badge/LatestVersion-2.1.4-orange.svg)](https://github.com/xiaoyaoyou1212/XSnow/blob/master/VERSION.md)
最新版本更新记录
- V2.1.4(2017-11-29)
- 修复取消所有网络请求出现的java.util.ConcurrentModificationException异常。
### 代码托管
[![JCenter](https://img.shields.io/badge/JCenter-2.1.4-orange.svg)](https://jcenter.bintray.com/com/vise/xiaoyaoyou/xsnow/2.1.4/)
## 效果展示
![操作演示动画](https://github.com/xiaoyaoyou1212/XSnow/blob/master/screenshot/screenshot.gif)
## 网络
### 简介:
网络算是项目的灵魂,基本每个项目都离不开网络,而一个简单好用,又支持各种配置的网络访问库就显得尤为重要了。该模块也是XSnow的核心功能,使用简单,支持定制常用配置,如各种拦截器、缓存策略、请求头等。
如果不进行二次封装,上层项目基于RxJava+Retrofit请求网络时需要每个接口都写一个服务接口,这样非常不便利。如何将响应结果通用处理就成为该模块的重点,项目中采用泛型转换方式,将响应结果ResponseBody通过map操作符转换成需要的T,具体实现参考项目中http包下的func包,如果需要Http响应码,也可以将响应结果包装成Response<ResponseBody>这样进行转换成T,考虑到项目中很少需要Http响应码来进行判定,一般使用服务器自定义的响应码就可以了,故该模块采用ResponseBody统一接收这种处理方式。
### 功能:
- 支持全局配置和单个请求的局部配置,如果局部配置与全局配置冲突,那么局部配置会替换全局配置。
- 全局配置支持`CallAdapter.Factory`、`Converter.Factory`、`okhttp3.Call.Factory`、`SSLSocketFactory`、`HostnameVerifier`、`ConnectionPool`、主机URL、请求头、请求参数、代理、拦截器、Cookie、OKHttp缓存、连接超时时间、读写超时时间、失败重试次数、失败重试间隔时间的一系列配置。
- 局部请求配置支持主机URL、请求后缀、请求头、请求参数、拦截器、本地缓存策略、本地缓存时间、本地缓存key、连接超时时间、读写超时时间的一系列配置。
- 支持OKHttp本身的Http缓存,也支持外部自定义的在线离线缓存,可配置缓存策略,共有五种缓存策略,如优先获取缓存策略,具体实现参考http包下的strategy包。
- 支持请求与响应统一处理,不需要上层每个模块都定义请求服务接口。
- 支持泛型T接收处理响应数据,也可根据服务器返回的统一数据模式定制如包含Code、Data、Message的通用Model ApiResult<T>。由于ApiResult的属性不定,无法做到统一处理,所以单独放到netexpand module中,里面包含与其相关的请求处理,可以根据该module定制属于各自服务器的相关功能。
- 支持异常统一处理,定制了ApiException拦截处理,统一返回异常信息。
- 支持返回Observable,可继续定制请求的相关特性,也支持返回回调的处理结果。
- 支持失败重试机制,可配置失败重试次数以及重试时间间隔。
- 支持根据Tag中途取消请求,也可以取消所有请求。
- ......
### 使用示例:
第一步需要在application中进行全局初始化以及添加全局相关配置,具体使用如下:
```
ViseHttp.init(this);
ViseHttp.CONFIG()
//配置请求主机地址
.baseUrl("http://192.168.1.100/")
//配置全局请求头
.globalHeaders(new HashMap<String, String>())
//配置全局请求参数
.globalParams(new HashMap<String, String>())
//配置读取超时时间,单位秒
.readTimeout(30)
//配置写入超时时间,单位秒
.writeTimeout(30)
//配置连接超时时间,单位秒
.connectTimeout(30)
//配置请求失败重试次数
.retryCount(3)
//配置请求失败重试间隔时间,单位毫秒
.retryDelayMillis(1000)
//配置是否使用cookie
.setCookie(true)
//配置自定义cookie
.apiCookie(new ApiCookie(this))
//配置是否使用OkHttp的默认缓存
.setHttpCache(true)
//配置OkHttp缓存路径
.setHttpCacheDirectory(new File(ViseHttp.getContext().getCacheDir(), ViseConfig.CACHE_HTTP_DIR))
//配置自定义OkHttp缓存
.httpCache(new Cache(new File(ViseHttp.getContext().getCacheDir(), ViseConfig.CACHE_HTTP_DIR), ViseConfig.CACHE_MAX_SIZE))
//配置自定义离线缓存
.cacheOffline(new Cache(new File(ViseHttp.getContext().getCacheDir(), ViseConfig.CACHE_HTTP_DIR), ViseConfig.CACHE_MAX_SIZE))
//配置自定义在线缓存
.cacheOnline(new Cache(new File(ViseHttp.getContext().getCacheDir(), ViseConfig.CACHE_HTTP_DIR), ViseConfig.CACHE_MAX_SIZE))
//配置开启Gzip请求方式,需要服务器支持
.postGzipInterceptor()
//配置应用级拦截器
.interceptor(new HttpLogInterceptor()
.setLevel(HttpLogInterceptor.Level.BODY))
//配置网络拦截器
.networkInterceptor(new NoCacheInterceptor())
//配置转换工厂
.converterFactory(GsonConverterFactory.create())
//配置适配器工厂
.callAdapterFactory(RxJava2CallAdapterFactory.create())
//配置请求工厂
.callFactory(new Call.Factory() {
@Override
public Call newCall(Request request) {
return null;
}
})
//配置连接池
.connectionPool(new ConnectionPool())
//配置主机证书验证
.hostnameVerifier(new SSLUtil.UnSafeHostnameVerifier("http://192.168.1.100/"))
//配置SSL证书验证
.SSLSocketFactory(SSLUtil.getSslSocketFactory(null, null, null))
//配置主机代理
.proxy(new Proxy(Proxy.Type.HTTP, new SocketAddress() {}));
```
后面就是具体调用请求的过程,请求的类型有多种情形,下面就以最常用的几种类型举例说明,具体效果可以查看demo,以下为使用示例:
- GET 不带缓存
```
ViseHttp.GET("getAuthor").request(new ACallback<AuthorModel>() {
@Override
public void onSuccess(AuthorModel authorModel) {
}
@Override
public void onFail(int errCode, String errMsg) {
}
});
```
提供了多种参数的添加方式,具体可查看BaseRequest中提供的API。
- GET 带缓存
```
ViseHttp.GET("getAuthor")
.setLocalCache(true)//设置是否使用缓存,如果使用缓存必须设置为true
.cacheMode(CacheMode.FIRST_CACHE) //配置缓存策略
.request(new ACallback<CacheResult<AuthorModel>>() {
@Override
public void onSuccess(CacheResult<AuthorModel> cacheResul
没有合适的资源?快使用搜索试试~ 我知道了~
基于RxJava2+Retrofit2精心打造的Android基础框架,
共200个文件
java:123个
xml:36个
png:13个
需积分: 13 33 下载量 79 浏览量
2017-12-12
12:03:16
上传
评论
收藏 10.56MB ZIP 举报
温馨提示
基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载、UI模块,基本都是项目中必用功能,每个模块充分解耦,可自由拓展。
资源推荐
资源详情
资源评论
收起资源包目录
基于RxJava2+Retrofit2精心打造的Android基础框架, (200个子文件)
gradlew.bat 2KB
start_moco_server.bat 83B
screenshot.gif 5.39MB
.gitignore 688B
.gitignore 7B
.gitignore 7B
.gitignore 7B
bintray.gradle 2KB
build.gradle 1KB
build.gradle 997B
build.gradle 764B
build.gradle 527B
settings.gradle 39B
gradlew 5KB
moco-runner-0.10.2-standalone.jar 5.85MB
gradle-wrapper.jar 52KB
DiskLruCache.java 42KB
NetTestActivity.java 23KB
HttpGlobalConfig.java 12KB
BaseRequest.java 12KB
RxPermissions.java 10KB
AuthorModelDao.java 8KB
UploadRequest.java 8KB
StatusLayoutManager.java 7KB
BaseHttpRequest.java 7KB
UploadDownActivity.java 7KB
HttpHeaders.java 7KB
HttpLogInterceptor.java 7KB
ViseHttp.java 6KB
DownloadRequest.java 6KB
HelperViewHolder.java 6KB
StatusLayout.java 6KB
MainActivity.java 6KB
DiskCache.java 6KB
ApiCache.java 5KB
CookiesStore.java 5KB
OtherTestActivity.java 5KB
DBManager.java 5KB
ApiPostRequest.java 5KB
DownProgress.java 5KB
PostRequest.java 5KB
HttpResponseInterceptor.java 4KB
MyApplication.java 4KB
ViewHelper.java 4KB
StatusSwitchActivity.java 4KB
AuthorModel.java 4KB
RxPermissionsFragment.java 4KB
BaseAdapter.java 4KB
EventSubscriber.java 3KB
UploadProgressRequestBody.java 3KB
DaoMaster.java 3KB
HelperAdapter.java 3KB
SpCache.java 3KB
BaseFragment.java 3KB
FrescoLoader.java 3KB
BaseViewHolder.java 3KB
ActivityManager.java 3KB
ApiException.java 3KB
ImageLoaderActivity.java 3KB
EventFind.java 2KB
DbHelper.java 2KB
BaseActivity.java 2KB
ApiResultFunc.java 2KB
EventComposite.java 2KB
GlideLoader.java 2KB
DataHelper.java 2KB
OkHttpCookies.java 2KB
RxBusImpl.java 2KB
ApiService.java 2KB
CacheStrategy.java 2KB
ViseConfig.java 2KB
PermissionManager.java 2KB
ApiRetryFunc.java 2KB
ApiTransformer.java 2KB
Permission.java 2KB
GsonConverterFactory.java 2KB
MemoryCache.java 2KB
GsonResponseBodyConverter.java 2KB
ApiManager.java 2KB
GzipRequestInterceptor.java 2KB
ApiGetRequest.java 2KB
MediaTypes.java 2KB
OnlineCacheInterceptor.java 2KB
EventBase.java 2KB
OfflineCacheInterceptor.java 1KB
OptionsRequest.java 1KB
DeleteRequest.java 1KB
ApiHost.java 1KB
PatchRequest.java 1KB
HeadRequest.java 1KB
GetRequest.java 1KB
PutRequest.java 1KB
IDatabase.java 1KB
ApiCode.java 1KB
GsonRequestBodyConverter.java 1KB
ApiBaseRequest.java 1KB
FirstRemoteStrategy.java 1KB
FirstCacheStrategy.java 1KB
ThreadMode.java 1KB
UploadProgressInterceptor.java 1KB
共 200 条
- 1
- 2
资源评论
修行者对666
- 粉丝: 1072
- 资源: 78
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功