zencart外贸网站建设,焦作网站开发,广州网站定做教程,免费微网站平台那个好官网
项目地址#xff1a;Github博客地址#xff1a;网络请求#xff0c;如斯优雅
OkHttp
另外对 OkHttp 原理感兴趣的同学推荐你看以下源码分析文章
OkHttp 精讲#xff1a;拦截器执行原理OkHttp 精讲#xff1a;RetryAndFollowUpInterceptorOkHttp 精讲#xff1a;…官网
项目地址Github博客地址网络请求如斯优雅
OkHttp
另外对 OkHttp 原理感兴趣的同学推荐你看以下源码分析文章
OkHttp 精讲拦截器执行原理OkHttp 精讲RetryAndFollowUpInterceptorOkHttp 精讲BridgeInterceptorOkHttp 精讲CacheInterceptorOkHttp 精讲ConnectInterceptorOkHttp 精讲CallServerInterceptor
集成步骤
如果你的项目 Gradle 配置是在 7.0 以下需要在 build.gradle 文件中加入
allprojects {repositories {// JitPack 远程仓库https://jitpack.iomaven { url https://jitpack.io }}
}
如果你的 Gradle 配置是 7.0 及以上则需要在 settings.gradle 文件中加入
dependencyResolutionManagement {repositories {// JitPack 远程仓库https://jitpack.iomaven { url https://jitpack.io }}
}
配置完远程仓库后在项目 app 模块下的 build.gradle 文件中加入远程依赖
android {// 支持 JDK 1.8compileOptions {targetCompatibility JavaVersion.VERSION_1_8sourceCompatibility JavaVersion.VERSION_1_8}
}dependencies {// 网络请求框架https://github.com/getActivity/EasyHttpimplementation com.github.getActivity:EasyHttp:12.2// OkHttp 框架https://github.com/square/okhttp// noinspection GradleDependencyimplementation com.squareup.okhttp3:okhttp:3.12.13
}
需要注意的是由于使用了 Lifecycle 特性目前框架只支持 AndroidX 的项目集成
生命周期自动管控介绍
框架可以自动管控请求的生命周期无需第三方调用者封装和适配这块其实用到 Jetpack 中的一个 Lifecycle 特性框架将网络请求和 LifecycleOwner 绑定在一起当 LifecycleOwner 触发 destroy 时框架会对绑定的网络请求进行 cancel 处理。相比较传统的写法这种方式更加简单快捷同时有 Lifecycle 特性的加持灵活也会更高因为我们完全不需要关心请求的主体是 Activity 还是 Fragment又或者是其他类型的对象。但并不是完全没有缺点因为 Lifecycle 特性是 AndroidX 包中的新特性如果需要使用的话当前项目必须基于 AndroidX 库开发的才可以集成。都说代码是最好的老师具体实现的代码如下
public final class HttpLifecycleManager implements LifecycleEventObserver {/*** 绑定组件的生命周期*/public static void register(LifecycleOwner lifecycleOwner) {lifecycleOwner.getLifecycle().addObserver(new HttpLifecycleManager());}Overridepublic void onStateChanged(NonNull LifecycleOwner source, NonNull Lifecycle.Event event) {if (event ! Lifecycle.Event.ON_DESTROY) {return;}// 移除监听source.getLifecycle().removeObserver(this);// 取消请求EasyHttp.cancel(source);}
}
极速下载功能介绍
其实本质上面和极速秒传的原理是差不多的只不过一个是上传另一个是下载。而极速上传是将本地文件的 MD5 值和服务器上面的进行比对如果服务器存在这个 MD5 值的文件就将这份文件映射一份到这个用户的网盘上面从而达到了极速秒传的效果。而极速下载也是同理根据后台给的文件 MD5 值和本地文件进行对比如果存在这个文件并且 MD5 值一致证明这个文件和服务器上面的文件是一致的那么就直接跳过下载直接回调下载成功监听。极速秒传和极速下载两者相同的共同点就是利用缓存来达到极速的效果只不过一者通过的是服务器的缓存另一者使用的是本地的缓存这两者都有一个共同的特点就是减少服务器的压力节省用户的等待时间。
代码定位功能介绍
框架会在日志打印中输出在网络请求的代码位置这样开发者可以直接通过点击 Log 来定位是在哪个类哪行代码这样可以极大提升我们排查问题的效率特别是在请求一多且业务复杂的情况下我相信没有一个人会拒绝这样的功能。
延迟发起请求功能介绍
通常我们都有这样一种需求就是我们希望发起网络请求但是希望它不是及时而是经过一定的延迟才去请求EasyHttp 针对这种场景进行了考虑并封装我们可以这样写来做到这种效果
EasyHttp.post(this).api(new XxxApi()).delay(3000).request(new HttpCallbackProxyHttpDataXxxBean(this) {Overridepublic void onHttpSuccess(HttpDataXxxBean result) {}});
延迟请求功能不仅支持同步和异步请求还支持下载请求延迟。