简介
OkOne是一款基于okhttp库的网络性能优化框架,但不同于其他框架对okhttp的使用调用进行封装,而是从不一样的方面,以对开发者无侵入的方式进行优化。
痛点
在APP项目中可能会包含多个组件模块,或依赖多个三方库,甚至部门分不同团队开发各自业务模块AAR供APP集成。其中可能都有使用到okhttp框架进行网络请求,不同的组件模块和三方库中各自创建OkHttpClient实例,或有开发者未通过单例缓存OkHttpClient,而是每次请求每次新建。这样将造成极大浪费,并且导致不能充分利用okhttp的请求队列和连接池等控制和优化措施。
解决
借助该OkOne库可以无侵入地将分散在不同组件中的OkHttpClient进行收敛,由OkOne进行统一管理和复用。OkOne会比较OkHttpClient.Builder进行区分复用,即相同配置的OkHttpClient.Builder将自动复用同一个OkHttpClient实例。
集成
集成很简单,仅需三步:
Minimum supported Gradle version is 6.5
- 1.在项目根目录的build.gradle里添加依赖
dependencies {
classpath 'com.cdh.okone:gradle:0.1.0'
}
- 2.在app module的build.gradle里应用插件
apply plugin: 'plugin.cdh.okone'
- 3.在app module的build.gradle的dependencies里添加依赖
implementation 'com.cdh.okone:okone:0.1.2'
至此已完成接入,运行即会自动生效。
效果
现在来看看实际效果,在demo中创建三个不同配置的OkHttpClient.Builder:
// builder1
OkHttpClient.Builder builder1 = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.addInterceptor(new HttpLoggingInterceptor())
.eventListener(mEventListener);
// builder2
OkHttpClient.Builder builder2 = new OkHttpClient.Builder()
.