介绍
经过最近的努力,将几个常用框架进行了封装,并抽成了一个安卓基础开发库 。
主要包括 网络请求、图片加载、数据库、事件总线、缓存、权限管理、工具类 模块。
其中,网络请求使用Retrofit+RxJava实现,图片加载使用Glide实现(可替换),数据库使用GreenDao实现(可替换),事件总线使用EventBus实现(可替换),权限管理使用RxPermission实现。
Demo采用MVP+Dagger2进行开发,演示了各模块的使用。
对以上提及的框架如果不熟悉,建议先了解下~
如果觉得不错,不妨点个star。你的支持,是我开源的动力~
使用说明
1. 添加依赖
在项目module下的gradle中添加以下依赖:
compile 'com.ljy.ring:devring:1.0.4'
由于数据库、图片加载、事件总线模块支持替换其默认实现的框架,
所以库中对GreenDao,Glide,EventBus的依赖是使用compileOnly(仅在编译时依赖),这么做是为了避免被替换的框架依然参与打包,从而增加了apk大小。
也就是说,对于这三个模块,当你需要使用相关框架时,还需添加其依赖。
如果要使用Devring库的图片加载模块(默认Glide),那么需要添加Glide依赖
compile 'com.github.bumptech.glide:glide:4.4.0'
如果要使用Devring库的数据库模块(默认GreenDao),那么需要添加GreenDao依赖
//Project下的build.gradle文件中加入
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
//Module下的build.gradle文件中加入
apply plugin: 'org.greenrobot.greendao'
compile 'org.greenrobot:greendao:3.2.0'
如果要使用Devring库的事件总线模块(默认EventBus),那么需要添加EventBus依赖
compile 'org.greenrobot:eventbus:3.0.0'
2. 初始化、配置、构建
在Application的onCreate中进行初始化、配置、构建。
务必按顺序执行这三步。
2.1 初始化
DevRing.init(this);
2.2 配置
根据你的需求进行相关模块的全局配置,下面将对每个配置方法进行说明。
2.2.1 配置网络请求模块
DevRing.configureHttp()
//设置BaseUrl
.setBaseUrl(UrlConstants.BASE_URL)
//设置请求超时时长,单位秒
.setConnectTimeout(15)
//设置全局的header信息
.setMapHeader(mapHeader)
//设置是否启用缓存,默认不启用
.setIsUseCache(true)
//设置缓存地址,传入的file需为文件夹,默认保存在/storage/emulated/0/Android/data/com.xxx.xxx/cache/retrofit_http_cache下
.setCacheFolder(file)
//设置缓存大小,单位byte,默认20M
.setCacheSize(size)
//设置有网络时缓存保留时长,单位秒,默认60秒
.setCacheTimeWithNet(time)
//设置无网络时缓存保留时长,单位秒,默认一周
.setCacheTimeWithoutNet(time)
//设置是否开启失败重试功能,目前仅支持普通的网络请求,上传下载不支持。默认不开启
.setIsUseRetryWhenError(true)
//设置失败后重试的最大次数,默认3次
.setMaxRetryCount(2)
//设置失败后重试的延迟时长,单位秒,默认3秒
.setTimeRetryDelay(5)
//设置是否开启Log,默认不开启
.setIsUseLog(true);
如果以上的配置无法满足你的要求,那么可以通过以下方法获取相关Builder进行具体定制
//获取OkHttpClient.Builder
DevRing.configureHttp().getOkHttpClientBuilder();
//获取Retrofit.Builder
DevRing.configureHttp().getRetrofitBuilder();
2.2.2 配置图片加载模块
DevRing.configureImage()
//设置“加载中”状态时显示的图片
.setLoadingResId(R.mipmap.ic_image_load)
//设置“加载失败”状态时显示的图片
.setErrorResId(R.mipmap.ic_image_load)
//设置是否开启状态切换时的过渡动画,默认false
.setIsShowTransition(true)
//设置是否使用okhttp3作为网络组件,默认true
.setIsUseOkhttp(false)
//设置内存缓存大小,不建议设置,使用框架默认设置的大小即可
.setMemoryCacheSize(size)
//设置Bitmap池大小,设置内存缓存大小的话一般这个要一起设置,不建议设置,使用框架默认设置的大小即可
.setBitmapPoolSize(size)
//设置具体的磁盘缓存地址,传入的file需为文件夹
.setDiskCacheFile(file)
//设置磁盘缓存大小,单位byte,默认250M
.setDiskCacheSize(200*1024*1024)
//设置磁盘缓存地址是否在外部存储中,默认false
.setIsDiskCacheExternal(true)